
當我點擊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"
Works 但 not 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="");}