2017-07-20 53 views
3

編輯:這是一個Firefox附加問題,與addon Adblock Plus相關。重新安裝插件可以終止這種奇怪的行爲,在這種行爲上,帶有特定特殊字符的URL會使錨點完全消失。無法使用.attr()設置href

如何使用jQuery將具有特殊字符的URL歸入href?

我在做什麼現在的問題是:

var x = encodeURI(myURLhere) 

我知道產生有效的聯繫,因爲我一直在使用console.log(x)進行檢查。

但是當我做:

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

我的錨根本消失。

一個例子上出現這種情況的網址:

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 

沒有人有任何建議,爲我能做些什麼,以這樣的URL歸因於我的錨的href?

+3

你能創造那麼你的問題片段?將'href'設置爲隨機元素不應刪除它。也*消失*意味着你看不到鏈接或從DOM中刪除? – Justinas

+0

你可以在你的問題中創建一個JSFiddle或代碼片段嗎? –

+0

你能展示整個代碼嗎? –

回答

6

的問題是,因爲;字符字符串中,使用encodeURI時沒有編碼的,而不是你需要拆分的查詢字符串關閉,只需要直接調用該encodeURIComponent()

注意:要使用此代碼段,您需要在新標籤中打開「Tweet」鏈接,因爲Twitter無法在iframe中顯示。

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

我從來沒有面對這個問題。有新的東西。 +1 –

+0

你的答案確定了「;」問題,我很欣賞它,但這並不是我想要問的。從我注意到的情況來看,似乎只發生在Firefox上,你可以在這裏查看:https://codepen.io/telmo_trooper/pen/VWoZGJ –

+0

在Firefox上,如果你評論'$(「#tweet」 ).attr(「href」,tweetLink);',「Tweet it」按鈕就消失了。儘管如此,它不會發生在Chromium上。 –