我正在开发一个项目,当用户在新选项卡或新窗口中打开页面时,该项目的行为非常奇怪,导致应用程序崩溃。
我需要一些 javascript 来帮助我防止这种情况发生。所以基本上我想阻止 ctrl+click,鼠标中键,shift+click,从上下文菜单中打开一个新的选项卡/窗口;或至少阻止尽可能多的人。我不想阻止 right ckick(如果可能的话),因为这永远不是解决方案。
注意:我是 js 的新手,所以非常感谢任何帮助。
最佳答案
代替
<a href="http://stackoverflow.com">link</a>
使用
<a href="javascript:void(0);" onclick="javascript:window.location.href='http://stackoverflow.com';">link</a>
单击鼠标中键可在同一选项卡中打开此位置,right click -> open in new tab
打开about:blank
页面。
当您无法手动编辑每个链接时,您可以使用此脚本:
for(var els = document.getElementsByTagName('a'), i = els.length; i--;){
els[i].href = 'javascript:void(0);';
els[i].onclick = (function(el){
return function(){
window.location.href = el.getAttribute('data-href');
};
})(els[i]);
}
而不是 <a href="...">
使用 <a data-href="...">
.
更进一步,您可以将上面的脚本更改为以下内容:
for(var els = document.getElementsByTagName('a'), i = els.length; i--;){
var href = els[i].href;
els[i].href = 'javascript:void(0);';
els[i].onclick = (function(el, href){
return function(){
window.location.href = href;
};
})(els[i], href);
}
这样链接保持不变<a href="...">
, 但如果用户禁用了 JavaScript,链接可能会在另一个选项卡/窗口中打开。
关于javascript - 防止在新选项卡/窗口中打开页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31472065/