1

有没有办法防止ie8中的文档标题更改。因为它会根据 url (www.#hash) 中的哈希值自动更改

例如:考虑我的标题是:

<head><title>Welcome</title></head>

如果哈希更改为#691,则标题在 IE8 中变为 $691:

<head><title>#691</title></head>

比任何更好的解决方案

$(window).load(function(){
    setTimeout(function(){
        window.document.title = "Some title";
    }, 1000);
});
4

3 回答 3

2

我找到了适用于 IE9 和 IE11 的更好解决方案。在现代浏览器中,您可以使用通用 DOMSubtreeModified 事件,但是在旧浏览器中,我使用了 onpropertychange 事件,该事件仅与旧的 attachEvent IE-only 事件注册模型一起支持,该模型自 Windows Internet Explorer 9 起已弃用,取而代之的是W3C 标准“addEventListener”事件模型。

在 IE9 和 IE11 上测试

function handleIETitle() {
  var originalTitle = document.title.split('#')[0];

  window.onload = function () {
    var titleEl = document.getElementsByTagName('title')[0];
    var docEl = document.documentElement;

    if (docEl && docEl.addEventListener) {
      docEl.addEventListener('DOMSubtreeModified', function (evt) {
        var t = evt.target;
        if (t === titleEl || (t.parentNode && t.parentNode === titleEl)) {
          if (document.title !== originalTitle) {
            document.title = originalTitle;
          }
        }
      }, false);
    } else {
      document.onpropertychange = function () {
        if (window.event.propertyName === 'title') {
          if (document.title !== originalTitle) {
            document.title = originalTitle;
          }
        }
      };
    }
  };
}

于 2015-06-10T07:31:06.877 回答
1

看起来像是 IE 的问题(特定于嵌入了 swf(flash/flex)的页面),请查看以下链接

如果页面的 url 带有 '#' 并且嵌入了 flash/swf,则 IE 标题更改为 <afterHash>

Heikki提供的答案

于 2013-07-04T10:58:42.290 回答
0
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);
                }

            }, 1000);
        }
    });
}
于 2015-08-12T14:26:33.857 回答