Il est très courant d'utiliser le titre Web pour inviter les utilisateurs pour de nouveaux messages, tels que Weibo et certaines adresses e-mail, qui sont très courantes. Comment implémenter une fonction?
L'idée est: accéder à l'arrière-plan via Ajax. Exemple: [Vous avez de nouvelles nouvelles] et [] basculer. Le contenu rapide est dynamique, donc le nombre d'espaces dans le texte de remplacement est également calculé. Utilisez des espaces pleine largeur ici. Cependant, s'il y a des caractères de demi-largeur tels que «nombre» dans le message rapide, il y aura des problèmes. Les espaces à la pleine largeur sont beaucoup plus larges que la largeur de la demi-largeur 1. De cette façon, il ne sera pas très confortable de flasher;
Mais document.title = ''; Peu importe le nombre d'espaces de demi-largeur, le navigateur n'en affiche qu'un. S'il est utilisé, il sortira tel quel; uniquement var t = document.getElementsByTagName ('title') [0] peut être utilisé. Obtenez l'objet Title Dom et modifiez-le par t.innerhtml = ''.
Mais cela se passera-t-il si bien, bien sûr que non. Notre mignon IE sortira toujours pour faire des ennuis en ce moment. Dans le navigateur IE, l'innerhtml du titre est en lecture seule (non seulement le titre, mais les attributs innerHTML de Col, Colgroup, Frameset, HTML, Style, Table, TBODY, TFOOT, Thead, TR sont en lecture seule). Si une affectation forcée est effectuée, une "erreur d'exécution inconnue" se produira. À l'heure actuelle, je n'ai pas trouvé de très bonne solution, donc je ne peux qu'ajouter d'essayer {} catch (e) {} pour y faire face spécialement
Partagez le code source:
La copie de code est la suivante:
<script type = "text / javascript" linguistique = "javascript">
var flashTitleplayer = {
start: function (msg) {
this.title = document.title;
if (! this.action) {
essayer {
this.element = document.getElementsByTagName ('title') [0];
this.element.innerhtml = this.title;
this.action = fonction (ttl) {
this.element.innerhtml = ttl;
};
} catch (e) {
this.action = fonction (ttl) {
document.title = ttl;
}
Supprimer ce.element;
}
this.toggletitle = function () {
this.action ('【' + this.messages [this.index = this.index == 0? 1: 0] + '] Bienvenue dans la magie moderne simple ");
};
}
this.messages = [msg];
var n = msg.length;
var s = '';
if (this.element) {
var num = msg.match (// w / g);
if (num! = null) {
var n2 = num.length;
n - = n2;
while (n2> 0) {
S + = "";
n2--;
}
}
}
while (n> 0) {
S + = '';
n--;
};
this.sessages.push (s);
this.index = 0;
this.timer = setInterval (function () {
flashTitlePlayer.toggleTitle ();
}, 1000);
},
stop: function () {
if (this.timer) {
ClearInterval (this.timer);
this.action (this.title);
Supprimer ce.Timer;
Supprimer this.Messages;
}
}
};
fonction flashTitle (msg) {
flashTitlePlayer.Start (msg);
}
fonction stopflash () {
flashTitlePlayer.stop ();
}
</cript>
Firefox, pas de problème sous Chrome, pas de problème lorsque IE est invité à ce qu'il y ait un ou pas de caractères demi-largeur dans le message.