使用setAttribute('ahref')的奇怪的Firefox行为

时间:2017-01-27 13:37:05

标签: javascript firefox

在Firefox中,此代码不起作用(隐藏链接):

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?

1 个答案:

答案 0 :(得分:2)

我可以看到您的代码存在两个问题,但我无法复制您描述的问题(尝试here)。

  1. 您没有正确编码字符串中的&,但您将其用作HTML文本(属性的内容是HTML文本)。如果这是问题我会感到非常惊讶,但从技术上来说,这是错误的。

  2. 您不是URI编码linktitle(或者至少,如果你是,那就没有显示。)

  3. 为了处理#1,我设置了href 属性而不是属性,并且我使用encodeURIComponentn来处理第二:

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