【问题标题】:window.location.hash issue in IE7IE7 中的 window.location.hash 问题
【发布时间】:2009-06-01 13:39:49
【问题描述】:

我们有一个 javascript 函数,它应该使用锚点将页面“移动”到某个位置。这个函数只做window.location.href = "#" + hashName。这适用于FF,但不适用于IE。我在 Windows XP 下使用 IE7 测试了这段代码。 我尝试了using window.location.hrefwindow.location.hashwindow.location.replace 和所有这些方法,但使用了document 对象。 有谁知道如何处理这个问题?

【问题讨论】:

  • “使用文档对象”是什么意思?您应该按照答案中的建议使用window.location - document.location 是 Gecko 特有的!
  • 我用了这两个 - 但它们都不起作用
  • 弗拉基米尔,在 IE7/XP 中为我工作...

标签: javascript internet-explorer internet-explorer-7


【解决方案1】:

IE 和大多数其他浏览器将使用 anchor.focus() 滚动到锚点,或者使用 element.scrollIntoView(true) 滚动到任何具有 id 的元素

【讨论】:

    【解决方案2】:

    我刚刚在Vista下的IE7中测试过这个问题,也许这个问题只存在于XP下的IE7中?因为这对我在 IE7、Chrome 和 Firefox 中运行良好:

     window.location.hash = hashName;
    

    如果这真的不起作用,那么我们可以按照 Kennebec 的建议使用 scrollIntoView。

     function scrollToAnchor(anchorName){
       //set the hash so people can bookmark
       window.location.hash = anchorName;
       //scroll the anchor into view
       document.getElementsByName(anchorName)[0].scrollIntoView(true);
     }
    

    这样使用:

     <script type='text/javascript'>scrollIToAnchor('foo');</script>
     <a name='foo'></a>
     <p>I will be scrolled into view</p>
    

    【讨论】:

      【解决方案3】:

      您是否尝试过仅更改 location.hash

      window.location.hash = "#" + hashName;
      

      【讨论】:

      • 对此不熟悉。不过看起来不错。 去测试...
      【解决方案4】:
      猜你喜欢
      • 2011-11-12
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      相关资源
      最近更新 更多