window.location.hash = “”;强制在Chrome和Safari上重新加载框架集
window.location.hash = ""; forces frameset reload on Chrome and Safari
我有以下页面:
<head>
<script type="text/javascript">
$(document).ready(function(){
var hash = window.location.hash;
var src = hash.substring(1); //remove #
window.location.hash = "";
if(src != ''){
frames['principal'].document.location.href = decodeURIComponent(src);
}
});
</script>
</head>
<frameset rows="18%,*" class="pagecontainer">
<frame name="top" noresize src="site/paginatop.htm" target="top" scrolling="no" frameborder="0"/>
<frameset cols="11%,*">
<frame name="lateral" noresize src="site/paginalateral.htm" target="lateral" frameborder="0"/>
<frame name="principal" id="principal" noresize src="site/paginahome.htm" target="principal" frameborder="0"/>
</frameset>
</frameset>
当我在哈希中加载带有URL的页面时,哈希值将加载到框架[主体]中。
但是,当我清除哈希(window.location.hash = ";)时,Chrome 和 Safari 会重新加载页面,因此 frame[principal] 获得默认值 (site/paginahome.htm)。我已经发现了一个报告该行为的错误 https://bugs.webkit.org/show_bug.cgi?id=24578
任何解决方法将不胜感激!
提前谢谢。
解决
我找到了解决window.history.replaceState问题的方法:
$(document).ready(function(){
var src = getHash();
if(src != ''){
frames['principal'].document.location.href = decodeURIComponent(src);
var strBrowser = navigator.userAgent.toLowerCase();
if (strBrowser.indexOf('chrome') > 0 || strBrowser.indexOf('safari') > 0) {
if(history.pushState) {
window.history.replaceState(null, window.document.title, '#');
}
}
else {
window.location.hash = "";
}
}
setFavicon();
});
在 Chrome 中,window.location.hash = ""
不会重新加载页面。它只是将其滚动到顶部顶部。
但也许使用 POST 会比哈希更好地解决您的问题。
相关文章:
- 数据表 AJAX 筛选器重新加载数据
- 如何在新加载的页面上执行(下拉)操作
- 根据上一个选项卡的选择器重新加载选项卡
- 获得“中止,因为不接受 0”并使用反应热加载器重新加载整页
- 咕噜咕噜的手表:实时加载重新加载落后 1 步....
- 如何为新加载的元素提供JQuery UI工具提示
- 如何在新加载的页面上使用相同的JavaScript代码(通过重定向)
- 使用PHP或Javascript检测页面刷新或新加载
- 砌体重新加载&reloadItems不起作用
- 单击后退按钮时阻止从缓存加载safari
- 如何使javascript计时器重新加载
- 如何获取新加载的图像's width / naturalWidth
- 列出并调用firefox扩展中新加载的选项卡中的js函数
- 旋转器重新加载图像似乎在覆盖层后面
- AJAX调用后,新加载的CSS选择器对jQuery.ech()不可用
- jScrollPane加载Safari中的动态内容分隔页
- jQuery砌体-砌体重新加载后调用方法
- 如何向所有查看器重新加载页面
- 如何打开子浏览器窗口,然后在新加载的子浏览器页面上执行脚本以单击其中的链接
- 如何选择新加载 html 的元素