Le titre IE est remplacé par si la page contient une URL contenant le caractère “#” et que Flash / swf y est intégré.

Le problème est que si IE (6.0+) contient du contenu Flash et que l’url de la page comporte un # quelque part, le contenu du fichier Flash se charge ou, si l’utilisateur interagit, le titre de la fenêtre modifie le contenu placé après le hachage.

par exemple, http://adobeflashwebsite.com/index.html#somediv

Ensuite, le titre de la page devient “somediv”, à partir du moment où l’utilisateur clique sur le contenu Flash, ou plusieurs fois même au moment du chargement du contenu Flash.

Cela se produit uniquement dans IE.

Ce qui suit est un cas très spécifique auquel je faisais face:

Ce qui suit est l’environnement avec lequel je fais face à des problèmes:

  1. Moteur de shunter pour afficher une page semblable à iGoogle
  2. Sammy.js
  3. Gadgets rendant flash / swf

Le problème ici est, peu importe le plugin avec lequel j’essaie d’intégrer le flash, je finis par avoir le problème suivant

  1. Lorsque le flash se charge complètement, il ajoute quelque chose comme # tab / xx, qui est en fait une chaîne utilisée par sammy pour stocker le dernier historique de navigation dans la page.
  2. Quand, un utilisateur commence à interagir avec le flash, le titre est complètement supprimé et seul # tab / xx rest en tant que titre.
  3. Lorsqu’un gadget est actualisé, même dans ce cas, le problème est le n ° 2.

Quelqu’un pourrait-il suggérer quel pourrait être le problème? Cela est probablement lié à sammy.js, car iGoogle n’a pas ce problème.

La solution de contournement suivante est le seul moyen (jusqu’à présent) que je sois le plus près de résoudre le problème:

var isIE11OrGreater = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/)); if (!isIE11OrGreater) { var originalTitle = document.title.split("#")[0]; document.attachEvent('onpropertychange', function (evt) { if(evt.propertyName === 'title' && document.title !== originalTitle) { setTimeout(function () { document.title = originalTitle; }, 1); } }); } //Incase the developer wants to change the title manually, instead of directly using //document.title=newtitle, he will need to use changeTitle(newTitle) function changeTitle(newTitle) { originalTitle = newTitle; document.title = newtitle; } 

C’est un bug IE:

Si vous utilisez la méthode de title de sammy, vous pouvez retarder légèrement l’exécution pour qu’elle se comporte sous IE.

 setTimeout(function() { context.title('Some title'); }, 1000); 

Cela ne résoudra pas vraiment le problème, mais j’ai remarqué qu’un peu de retard aide parfois IE.

Je ne connais pas vraiment sammy.js mais:

1) l’object Flash est en quelque sorte en train de «prendre possession» de la propriété title.

OU

2) sammy.js efface la valeur du titre sur HTML qui perd le focus, alias Flash le gagne (moins de chances et je ne sais pas pourquoi quelqu’un ferait cela)

Si 1) -> définir la propriété title dans l’object Flash lui-même (pas un utilisateur Flash, ne savez pas si cela peut être fait facilement)

Si 2) -> le javascript décharge-t-il une valeur de chaîne de variable connectée à la propriété title?

SUGGESTION:

Placez votre object flash dans un nouvel élément

, en atsortingbuant à

un gestionnaire d’événements .click () qui modifie la propriété title d’un document. Essaye ça:

 $('title').text('YourTitleHere'); 

Je suis un peu en retard à la fête mais je préfère cette approche:

 var originalTitle = document.title; copyLinkClipboard = new ZeroClipboard(document.getElementById('copy-link-btn')); copyLinkClipboard.on( 'ready', function () { copyLinkClipboard.on( 'aftercopy', function (event) { event.target.blur(); console.log('Successfully copied link to your clipboard!'); document.title = originalTitle; // sets the title back on successful copy }); }); document.title = originalTitle; // sets title back when it changes on instantiation 

Cela modifie spécifiquement le titre dans les deux événements que ZeroClipboard le modifie, plutôt que d’enregistrer un écouteur sur l’événement document.onpropertychange.

 //some changes if (browser.ie < 10) { document.attachEvent('onpropertychange', function(evt) { if (evt.propertyName === 'title' && document.title) { setTimeout(function() { var b=document.title.indexOf('#'); if(b!==-1){ document.title = document.title.slice(0,b); } }, 1); } }); }