停止窗口.位置.替换重定向
Stopping window.location.replace from redirecting
我有一个 html 代码,我无法更改,但可以将.js文件加载到其中。
我可以添加一些 java 脚本代码来阻止window.location.replace
工作吗?
为此,您必须替换 location
上的 replace
函数,完全替换location
,或完全替换window
(这不是保证,因为您也可以在松散模式下在全局范围内this
访问它,并通过其他几个别名)。
似乎两者都是不可能的,即使有Object.defineProperty
.
本杰明提到了历史 API,但我在历史 API 中没有看到任何允许您取消由 location.replace
发起的导航的内容。
所以我认为你不能这样做。
(CW,因为这是社区的努力。
无法重新定义location.replace
,因为它不是可配置的属性。
但是,您可以尝试将整个location
对象替换为类似的对象(例如代理),但使用自定义replace
。
问题是window.replace
也不是可配置的,但你可以在内部作用域中隐藏它:
(function() {
function customReplace() { /* ... */ }
var location = new Proxy(Object.create(window.location), {
get: function(target, property, receiver) {
if(property === 'replace') return customReplace;
return window.location[property];
},
set: function(target, property, value, receiver) {
return window.location[property] = value;
return true;
},
});
location.replace('http://example.com'); // Nothing happens
location.host; // Still works
location.host = 'example.com'; // Still works
})();
相关文章:
- 通过javascript重定向html传递php变量
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 使用angular重定向到html页面
- 如何在chrome扩展中重定向到html页面
- 无法从jquery Mobile导航栏重定向到另一个页面
- ng视图外的链接重定向到ng视图内的页面
- 在phonegap应用程序内部重定向不起作用
- CORS-重定向到第二个GET正在接收的页面
- 重定向javascript,替换url
- 用 JavaScript 重定向替换 php 中的标头
- 停止窗口.位置.替换重定向
- 替换历史记录,然后在 AngularJS 中重定向
- JavaScript重定向和替换
- 替换部分URL的onclick和重定向
- 替换当前URL而不重定向
- 的位置.替换以删除当前页面的历史记录,而无需重定向
- Jquery window.location.替换,只重定向到基本URL
- 替换浏览器 url 而不重定向,使用 javascript 当 ajax 调用返回响应
- 替换/重定向包含锚链接 (#) 的 URL
- Javascript错误替换字符串和url重定向