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.
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:
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
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); } }); }