2017-01-27 33 views
-3

在Firefox這個代碼不工作(鏈接是隱藏的)怪異的Firefox行爲:用的setAttribute( 'AHREF')

var o = document.getElementById("LinkFBShareLink"); 
var fbURL = 'https://www.facebook.com/sharer/sharer.php?u=' + link + '&title=' + title; 
o.setAttribute('href', fbURL); 

,而此代碼的工作:

var o = document.getElementById("LinkFBShareLink"); 
var fbURL = 'https://www.facebook.com/sharer/sharer.phpu=' + link + '&title=' + title; 
o.setAttribute('href', fbURL); 

(所不同的是?在第一個網址中。)

該代碼在Chrome中運行。爲什麼不在Firefox?

+0

定義「不起作用」。我非常懷疑''setAttribute'在Firefox中被破壞了。 –

+0

'/ sharer.phpu ='甚至不是有效的。 – Justinas

+0

鏈接是不可見的setAttribute() – milet

回答

2

雖然我無法複製您描述的問題(嘗試here),但我可以看到您的代碼存在兩個問題。

  1. 你不正確編碼字符串中的&,但你使用它作爲HTML文本(屬性的內容是HTML文本)。如果這是問題,我會非常驚訝,但從技術上講,這是錯誤的。

  2. 你不是URI編碼linktitle(或者至少,如果你是,那是不顯示。)

爲了對付#1,我會設置href財產而不是屬性,我會使用encodeURIComponentn來處理第二種:

var o = document.getElementById("LinkFBShareLink"); 
o.href = 'https://www.facebook.com/sharer/sharer.php?u=' + 
     encodeURIComponent(link) + 
     '&title=' + encodeURIComponent(title); 
+0

我對'link'和'title'進行編碼 – milet

+0

簡單'o。 setAttribute('href','https://www.facebook.com/sharer/sharer.php?u=');'不適用於我 – milet

+0

@milet:在Firefox 50上運行得很好(和我沒有理由認爲它不適用於所有Firefox版本):https://jsfiddle.net/ej07sk8z/1/再次,請使用Stack Snippets(**)將**問題更新爲** runnable ** [mcve] '[<>]'工具欄按鈕)實際上證明了這個問題。 –