我正在开发一个项目,当用户在新标签页或新窗口中打开页面时,该行为会非常奇怪,从而导致应用程序崩溃.
我需要一些可以帮助我防止这种情况的JavaScript.所以基本上我想阻止ctrl + click,鼠标中键,shift + click,从上下文菜单中打开一个新的选项卡/窗口; 或至少阻止尽可能多的.我不想阻止正确的ckick(如果可能的话),因为这绝不是一个解决方案.
注意:我对js很新,所以任何帮助都会非常感激.
Kam*_*osz 10
代替
<a href="http://stackoverflow.com">link</a>
Run Code Online (Sandbox Code Playgroud)
使用
<a href="javascript:void(0);" onclick="javascript:window.location.href='http://stackoverflow.com';">link</a>
Run Code Online (Sandbox Code Playgroud)
单击鼠标中键在同一选项卡中打开此位置,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]);
}
Run Code Online (Sandbox Code Playgroud)
而不是<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);
}
Run Code Online (Sandbox Code Playgroud)
这样链接保持不变<a href="...">,但如果用户禁用了JavaScript,则可以在另一个选项卡/窗口中打开链接.
| 归档时间: |
|
| 查看次数: |
17376 次 |
| 最近记录: |