เป็นเรื่องธรรมดามากที่จะใช้ชื่อเว็บเพื่อแจ้งให้ผู้ใช้สำหรับข้อความใหม่เช่น Weibo และที่อยู่อีเมลบางอย่างซึ่งเป็นเรื่องธรรมดามาก จะใช้ฟังก์ชั่นได้อย่างไร?
แนวคิดคือ: เข้าถึงพื้นหลังผ่าน AJAX ตัวอย่าง: [คุณมีข่าวใหม่] และ [] สลับ เนื้อหาพรอมต์เป็นแบบไดนามิกดังนั้นจำนวนช่องว่างในข้อความทดแทนจะถูกคำนวณ ใช้ช่องว่างแบบเต็มความกว้างที่นี่ อย่างไรก็ตามหากมีอักขระครึ่งความกว้างเช่น 'หมายเลข' ในข้อความพรอมต์จะมีปัญหา ช่องว่างที่เต็มไปด้วยความกว้างนั้นกว้างกว่าความกว้างของความกว้างครึ่ง 1 ด้วยวิธีนี้มันจะไม่สะดวกสบายมากที่จะแฟลช
แต่ document.title = ''; ไม่ว่าจะมีช่องว่างครึ่งความกว้างเท่าใดเบราว์เซอร์จะแสดงเพียงหนึ่งเดียวเท่านั้น หากใช้งานมันจะส่งออกตามที่เป็นอยู่ รับวัตถุชื่อ DOM และแก้ไขโดย t.innerhtml = ''
แต่มันจะเป็นไปอย่างราบรื่นแน่นอนไม่ IE ที่น่ารักของเราจะออกมาเพื่อสร้างปัญหาในเวลานี้ ในเบราว์เซอร์ IE, innerhtml ของชื่อนั้นเป็นแบบอ่านอย่างเดียว (ไม่เพียง แต่ชื่อ แต่คุณลักษณะ innerhtml ของ col, colgroup, frameset, html, สไตล์, ตาราง, tbody, tfoot, thead, tr อ่านอย่างเดียว) หากมีการกำหนดการบังคับใช้ "ข้อผิดพลาดรันไทม์ที่ไม่รู้จัก" จะเกิดขึ้น ในปัจจุบันฉันยังไม่พบทางออกที่ดีมากดังนั้นฉันสามารถเพิ่มลอง {} catch (e) {} เพื่อจัดการกับมันเป็นพิเศษ
แชร์ซอร์สโค้ด:
การคัดลอกรหัสมีดังนี้:
<script type = "text/javascript" language = "JavaScript">
var flashtitlePlayer = {
เริ่มต้น: ฟังก์ชั่น (msg) {
this.title = document.title;
ถ้า (! this.action) {
พยายาม {
this.element = document.getElementsByTagname ('title') [0];
this.element.innerhtml = this.title;
this.action = function (ttl) {
this.element.innerhtml = ttl;
-
} catch (e) {
this.action = function (ttl) {
document.title = ttl;
-
ลบสิ่งนี้องค์ประกอบ;
-
this.toggletletle = function () {
this.action ('【' + this.messages [this.index = this.index == 0? 1: 0] + '] ยินดีต้อนรับสู่เวทมนตร์สมัยใหม่ที่เรียบง่าย ");
-
-
this.messages = [msg];
var n = msg.length;
var s = '';
if (this.element) {
var num = msg.match (// w/g);
ถ้า (num! = null) {
var n2 = num.length;
n -= n2;
ในขณะที่ (n2> 0) {
s += "";
N2--;
-
-
-
ในขณะที่ (n> 0) {
s += '';
n--;
-
this.messages.push (s);
this.index = 0;
this.timer = setInterval (function () {
flashtitleplayer.toggletletle ();
}, 1,000);
-
หยุด: ฟังก์ชั่น () {
if (this.timer) {
ClearInterval (this.timer);
this.action (this.title);
ลบสิ่งนี้ timer;
ลบสิ่งนี้ข้อความ;
-
-
-
ฟังก์ชั่น flashtitle (msg) {
flashtitleplayer.start (msg);
-
ฟังก์ชั่น stopflash () {
flashtitleplayer.stop ();
-
</script>
Firefox ไม่มีปัญหาภายใต้ Chrome ไม่มีปัญหาเมื่อ IE ได้รับแจ้งว่ามีอักขระหนึ่งหรือไม่มีครึ่งหนึ่งในข้อความ