Ich wollte nur ein kurzes Userscript erstellen, um zu verhindern, dass Webseiten Links in neuen Tabs öffnen, so dass ich wählen kann, wann dies geschieht. Oh Junge.Event.PreventDefault() funktioniert nicht immer
Ich wollte plain Javascript verwenden; Ich denke, es reicht für so eine leichte Aufgabe. Ich habe alle meine Tests in Quora gemacht, weil ich beschlossen habe, diesen kleinen Code zu schreiben.
Nun, nichts hat funktioniert. Ich fing einfach an und erhöhte die Verrücktheit meines Codes angesichts des Fehlers: der Link öffnete sich egal wieviele preventDefault() 's, geben falsche zurück, verhindern [*] Propagation(), eventListeners ... Sogar ändernd das dom, um das Element a
von seinem Ziel zu entfernen = "_ blank".
Am Ende biss ich meine Zunge und versuchte jQuery mit diesem kleinen Schnipsel:
$("a").click(function(event){
event.preventDefault();
alert("Was preventDefault() called: " + event.isDefaultPrevented());
});
Aber das etwas Gutes entweder nicht tat. Also habe ich aufgegeben. Ich erkannte dann, dass der Code auf anderen Websites zu funktionieren schien. Außer auf Quora.com. Eine regelmäßige Quoren Link sieht wie folgt aus:
<a href="http://thewebsite.to/go"
rel="noopener nofollow"
target="_blank"
onclick="return Q.openUrl(this);"
class="external_link"
data-qt-tooltip="thewebsite.to"
data-tooltip="attached">
Link text
</a>
Es gibt viel Mist da, sicher, aber ich habe nach unten worden Strippen Attribute so oft, bis die blanken Knochen: <a href="http://thewebsite.to/go"></a>
und immer noch nicht funktioniert. Das Beste von allem ist, dass, obwohl der Link öffnet, event.isDefaultPrevented()
wahr zurückgibt!
Warum passiert das und wie kann ich es beheben?
Das hat eine Inline-Event-Handler. Wird das dynamisch erstellt? – Jai
Es ist wahrscheinlich, warum? –