2017-07-20 2 views
3

Bearbeiten: Es war ein Firefox-only-Problem im Zusammenhang mit dem Addon Adblock Plus. Die Neuinstallation des Addons setzte diesem seltsamen Verhalten ein Ende, bei dem URLs mit bestimmten Sonderzeichen die Anker verschwinden ließen.Kann nicht festlegen, href mit .attr()

Wie kann ich mit jQuery URLs mit Sonderzeichen einem href zuordnen?

Was ich jetzt tun, ist:

var x = encodeURI(myURLhere) 

Was ich gültige Links wissen erzeugt, weil ich console.log(x) benutze es zu überprüfen. Aber

, wenn ich tun:

$("#tweet").attr("href", x); 

Mein Anker einfach verschwindet.

Ein Beispiel für eine URL, auf dem das passiert:

https://twitter.com/intent/tweet?text=%22If%20it%20is%20not%20right%20do%20not%20do%20it;%20if%20it%20is%20not%20true%20do%20not%20say%20it.%22%20%E2%80%93%20Marcus%20Aurelius 

Hat jemand einen Vorschlag, wie von dem, was ich so URL mein Anker des href-Attribut kann tun?

+3

Können Sie SO schaffen mit Ihrem Problem Snippet? Wenn Sie "href" auf ein zufälliges Element setzen, sollte es nicht entfernt werden. Auch * verschwindet * bedeutet, dass Sie den Link nicht sehen können oder er aus dem DOM entfernt wurde? – Justinas

+0

Können Sie in Ihrer Frage ein JSFiddle oder ein Snippet erstellen? –

+0

Können Sie den ganzen Code anzeigen? –

Antwort

6

Das Problem ist wegen der ; Zeichen in der Zeichenfolge, die bei der Verwendung encodeURI nicht codiert ist, stattdessen müssen Sie die Querystring aus und rufen Sie einfach encodeURIComponent() auf diese direkt.

Hinweis: Damit dieses Snippet funktioniert, müssen Sie den Link "Tweet" in einem neuen Tab öffnen, da Twitter nicht im Iframe angezeigt werden kann.

var text = 'If it is not right do not do it; if it is not true do not say it." – Marcus Aurelius"' 
 
var x = encodeURIComponent(text); 
 
$("#tweet").attr("href", 'https://twitter.com/intent/tweet?text=' + x);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="" id="tweet">Tweet</a>

+0

Ich habe dieses Problem nie. habe etwas neues bekommen. +1 –

+0

Ihre Antwort repariert das ";" Problem, ich schätze es, aber es ist nicht wirklich das, was ich fragen wollte. Von dem, was ich bemerkt habe, scheint es nur auf Firefox passieren, können Sie es hier überprüfen: https://codepen.io/telmo_trooper/pen/VWoZGJ –

+0

In Firefox, wenn Sie die Zeile "$ (# tweet" Kommentar)) .attr ("href", tweetLink); ', der" Tweet it "-Knopf verschwindet einfach. Es passiert jedoch nicht auf Chrom. –

Verwandte Themen