js 如何拦截 location.href,让页面的 location.href 都失效或者可以自定义跳转到其他页面?

2021-01-29 11:08:38 +08:00
 zictos
alert()和 window.open()都可以拦截,只需要重新赋值即可,比如添加一行 alert=0,那么所有的 alert 就失效了。甚至可以自定义只拦截包括某些字符串的 alert 对话框,具体可以搜索“js 拦截 alert”。

html 的 a 标签也可以拦截, 具体可以搜索“js 阻止 a 标签跳转”。

但是 location.href 是一个属性,只要修改属性就会触发页面跳转,设置为任何值都无法让它失效。并且 href 属性也无法删除。难道没其他办法了呢?或者能不能获取到 location.href 这个事件并拦截,然后再自定义做自己想做的事。
5886 次点击
所在节点    JavaScript
26 条回复
sleepm
2021-01-29 14:27:12 +08:00
document.addEventListener('click', function(event) {
target = event.target;
if(target.nodeName == "A"){
event.preventDefault();
}else{
console.log(target.nodeName);
}
});
粗暴..
JKKK
2021-01-29 17:15:50 +08:00
Proxy
ysc3839
2021-01-29 17:33:30 +08:00
这个问题应该从浏览器层面解决的。但不知道为什么 Chrome 有打开外部程序前提示的功能,却不给 Chrome Android 启用。
顺便吐槽一下,Chrome Android 给人感觉问题很多,经常出现卡死的情况,不是说浏览器已经是多进程模型,标签页出现问题不会导致整个程序卡死了吗?
shenyuzhi
2021-01-29 22:04:13 +08:00
浏览器 api 不是普通的 js 对象。不建议做骚操作。
anson2017
2021-02-05 18:37:11 +08:00
window.location.href = null
zictos
2021-02-05 18:40:00 +08:00
@anson2017 #25 不行,会跳转到当前页面所在路径下的 null 页面,是一个不存在的页面

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749471

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX