Links funktionieren nicht

Links funktionieren nicht

Wenn ich auf einen target=_blank[1]-Link klicke, öffnet IE11 einen neuen leeren Tab statt des erwarteten Tabs. Das funktioniert in Chrome[2] einwandfrei, schlägt aber in IE8 und jetzt auch in IE 11 fehl.

Um das Problem zu beheben, habe ich meine Browsereinstellungen (Interneteinstellungen/Registerkarte „Erweitert“) zurückgesetzt und auf IE 11 aktualisiert.

Das Ändern der Registerkarteneinstellungen scheint dies zu beeinflussen, aber keine Option führt zum erwarteten Verhalten.

[1] Beispielcode:

<A class=oLinkExternal href="http://orgintranet.org.co.uk/systems/ibd-db/" target=_blank>IBD database</A>

[2] Version 42.0.2311.135

Antwort1

Da target="_blank"es funktioniert, aber nicht target=_blank, scheint es sich um einen Fehler in IE11 zu handeln, bei dem ein Attribut, das mit einem Unterstrich beginnt, nicht richtig analysiert wird.

Die Problemumgehungen für einen solchen Fehler, die mir einfallen, sind:

  1. Verwenden Sie einen anderen und besseren Browser
  2. Korrigieren Sie jede Seite im Internet und ersetzen Sie sie target=_blankdurchtarget="_blank"

Für die erste Option brauchen Sie meine Hilfe nicht.

Die zweite Option ist nicht so unmöglich, wie sie klingt. Ich werde weiter unten einen Ansatz skizzieren, aber Sie sollten berücksichtigen, dass ich IE11 nicht verwende und dies noch nie ausprobiert habe.

Eine Software, die geladene HTML-Seiten modifiziert, istFettaffe. Es gibt einige Anpassungen davon (von unbekannter Qualität) für IE11:

Vorausgesetzt, dass eines davon funktioniert, ist hier ein Benutzerskript, das die Aufgabe erledigen könnte:

// ==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";
})();

Dies setzt möglicherweise fälschlicherweise voraus, dass Greasemonkey die ersetzten Attribute in Anführungszeichen setzt. Wenn dies nicht der Fall ist, kann das Skript geändert werden, um die Anführungszeichen zu erzwingen.

Da ich nichts getestet habe, entschuldige ich mich im Voraus, wenn dieser Ansatz nicht funktioniert.

Antwort2

Sie können das Attribut target='_blank' mit jQuery entfernen

etwas wie

$document.ready(function(){
 $("a").attr('target','_blank');
});

oder einfach nur js

var as = [].slice.apply(document.getElementsByClassName('oLinkExternal'));
for (var a in as){as[a].target="");}

verwandte Informationen