当前位置: 首页 > 面试题库 >

IE6 / 7后退/前进按钮不更改window.location.hash

颛孙昆
2023-03-14
问题内容

我有一个使用哈希导航的ajax webapp(JSF 2.0)。

我已在此答案的帮助下使用了事件触发功能,并setInterval()在较旧的浏览器(主要是IE6 + 7)中检查了值的变化。

执行此操作的Javascript代码:

window.onload = window.onhashchange = function() {
    lastHash = window.location.hash; // To save a refresh on browsers that don't need it.
    var fragment = document.getElementById('fragment');
    fragment.value = window.location.hash;
    fragment.onchange();
}

// Old Browsers That don't support onhashchange...
var lastHash = window.location.hash;
function checkFragment() {
    if (window.location.hash != lastHash) {
        lastHash = window.location.hash;
        var fragment = document.getElementById('fragment');
        fragment.value = window.location.hash;
        fragment.onchange();
    }
}

这很好。意思是,当我更改哈希值时,AJAX应用会获取通知并进行更新。IE
6/7是其中一个无效的实例。当我按下“后退/前进”按钮时,我可以看到URL栏已使用正确的哈希值更新,但windows.location.hash似乎没有变化,因此我的SetEvent()功能未检测到变化。

有人找到解决方案了吗?谢谢!


问题答案:

考虑使用jQuery Hashchange插件来避免IE6 / 7兼容性问题。您可以在此处找到代码示例。可以根据您的情况进行如下更改。

<script src="jquery.js"></script>
<script src="jquery-hashchange.js"></script>
<script>
    $(function(){
        $(window).hashchange(function(){
            $('#fragment').val(location.hash).change();
        });

        $(window).hashchange();
    });
</script>


 类似资料:
  • 如何更改searchview中黑色箭头(后退按钮)的颜色,我已尝试使用以下代码进行自定义 但它不起作用

  • 在我的应用程序中,我使用动作栏和导航抽屉。操作栏中有一个按钮用于打开和关闭导航抽屉。我想把它的颜色改成红色。我该怎么做?

  • 问题内容: 我正在尝试在3个不同的图像之间来回切换按钮,但该按钮在上一个图像中没有回来,只是前进到下一个图像,有人可以帮我吗? 问题答案: 这是我想出的。 基本上,我们有一个循环,可根据所需反应检查每个反应,然后删除旧消息并发送新消息(如果我们看到了所寻找的反应之一)。 有人要求提供一种用于编辑消息的版本,而不是发送新消息,我也将其更新为最新版本:

  • 问题内容: 如果javascript修改了页面A中的DOM,则用户导航到页面B,然后单击返回按钮返回页面A。页面A对DOM的所有修改都将丢失,并且向用户显示最初从服务器检索到的版本。 它可以在stackoverflow,reddit和许多其他流行的网站上以这种方式工作。(尝试向该问题添加测试评论,然后导航至其他页面并单击“返回”按钮以返回- 您的评论将“消失”) 这很有意义,但是某些网站(appl

  • 问题内容: 你好, 我正在寻找解决方案,其中后退和前进按钮控制我的Ajax调用历史记录。 因此,如果我要进行ajax调用,然后按“返回”,我想重新加载原始页面。 如果我先执行ajax调用,然后再执行另一个,然后按“后退”按钮,我想再次执行第一个ajax调用。 依此类推…(即,如果我现在按前进按钮,则重做第二个ajax coll shell ;-)) 谢谢 更新 好吧,我使用名为jQuery Add