【发布时间】:2011-08-20 04:38:13
【问题描述】:
我有一个使用哈希进行导航的 ajax webapp (JSF 2.0)。
我在 this answer 和 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() 函数没有检测到变化。
有人找到解决办法了吗? 谢谢!
【问题讨论】:
-
嗯...在我看来像 javascript,而不是 java
标签: javascript ajax jsf-2