当我点击target=_blank
[1] 链接时,IE11 会打开一个新的空白选项卡,而不是预期的选项卡。这在 Chrome[2] 中运行正常,但在 IE8 中失败,现在在 IE 11 中失败。
我重置了浏览器设置(Internet 设置/高级选项卡)并升级到 IE 11 以尝试解决此问题。
更改选项卡设置似乎确实会影响这一点,但没有选项能够获得预期的行为。
[1]示例代码:
<A class=oLinkExternal href="http://orgintranet.org.co.uk/systems/ibd-db/" target=_blank>IBD database</A>
[2] 版本 42.0.2311.135
答案1
由于target="_blank"
有效但无效target=_blank
,这看起来像是 IE11 中的一个错误,无法正确解析以下划线开头的属性。
我能想到的解决此类错误的方法是:
- 使用其他更好的浏览器
- 修复互联网上的每个页面,替换
target=_blank
为target="_blank"
对于第一个选项,你不需要我的帮助。
第二种选择并不像听起来那么不可能。我将在下面概述一种方法,但你应该考虑到我不使用 IE11,也从未尝试过这种方法。
修改已加载 HTML 页面的软件是油脂猴. IE11 中存在一些改编版本 (质量未知) :
假设其中一个有效,这里有一个可以完成这项工作的用户脚本:
// ==UserScript==
// @name your-choice
// @namespace http://avoid.collusions.com
// @description Resets target="_blank" links hoping to add quotes.
// @include *
// ==/UserScript==
(function () {
var external = document.links;
for (var k=0; k<external.length; k++)
if (external[k].href && external[k].target=="_blank")
external[k].target = "_blank";
})();
这可能是错误地假设 Greasemonkey 会在其替换的属性周围添加引号。如果没有发生这种情况,可以修改脚本以强制使用引号。
由于我还没有进行任何测试,如果这种方法不起作用,我提前道歉。
答案2
您可以使用 jQuery 删除 target='_blank' 属性
就像是
$document.ready(function(){
$("a").attr('target','_blank');
});
或者只是 js
var as = [].slice.apply(document.getElementsByClassName('oLinkExternal'));
for (var a in as){as[a].target="");}