gpt4 book ai didi

Opera 中的 Javascript location.replace 错误

转载 作者:行者123 更新时间:2023-11-29 15:01:42 24 4
gpt4 key购买 nike

我正在 Opera 中执行 JS location.replace。有一个已知的错误,即当只有 location.hash 更改时,位置不会被替换但会更新(请参阅 http://my.opera.com/community/forums/topic.dml?id=568931 )。

我正在尝试执行以下解决方法:

var url = location.href.split("#")[0];
if (window.opera) {
window.history.back();
}
location.replace(url + '#' + newhash);

不幸的是,这似乎行不通。在我开始尝试 setTimeout 之前,我想看看是否有人有更好的主意。

最佳答案

我认为最好的解决方法是根本不解决它。

推理:首先,如果我使用后退按钮或调用 history.back(),则应该终止在this 页面中运行的脚本。因此,在上面的解决方法中,脚本将(或应该)在 location.replace() 调用之前实际停止运行。我们不记得你想调用 location.replace() 并在你返回的页面上执行它,因为那将是一个脚本注入(inject)安全问题。

其次,即使此变通方法有效,我也强烈建议不要使用它。原因是 Opera 最终会修复它的错误。如果最终用户使用固定 Opera 版本和运行脚本的页面,则每次单击您的一个链接都会从该用户的浏览历史记录中删除一个条目。

要获得合适的解决方案,您可以研究 history.replaceState() - HTML5 中指定的新方法:http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#dom-history-replacestate

关于Opera 中的 Javascript location.replace 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com