【问题标题】:document title is changing in ie8 on hash changeie8 中的文档标题在哈希更改时发生更改
【发布时间】:2013-07-04 09:56:17
【问题描述】:

有没有办法防止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);
});

【问题讨论】:

  • 我无法复制这种行为
  • 你试过什么?修复你的 HTML 可能会成功,因为这有标签汤的味道。尝试使用 HTML5 文档类型 (&lt;!DOCTYPE html&gt;) 将 IE8 强制为(接近)标准
  • 还有一些选项如何在 IE8 的标题栏中显示页面标题,但我不记得任何正确的名称术语。请检查 Internet 选项 > 高级,它是...
  • 请注意stackoverflow的问题质量! “哈希”是什么意思,为什么哈希会改变,提供一些例子,到目前为止你做了什么,...

标签: javascript


【解决方案1】:

我找到了适用于 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;
          }
        }
      };
    }
  };
}

【讨论】:

    【解决方案2】:

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

    IE title changes to <afterHash> if the page has a url with '#' , and has flash/swf embedded in it

    Heikki提供的答案

    【讨论】:

      【解决方案3】:
      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);
              }
          });
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-04
        • 2016-12-23
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        相关资源
        最近更新 更多