无法使用.attr()设置href

时间:2017-07-20 07:09:17

标签: javascript jquery html

编辑:这是一个仅限Firefox的问题,与插件Adblock Plus相关。重新安装插件结束了这种奇怪的行为,其中带有一些特定特殊字符的URL会使锚点完全消失。

如何使用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

有没有人有任何建议,我可以做些什么来将这些网址归因于我的主播?

1 个答案:

答案 0 :(得分:6)

问题是因为字符串中的;字符在使用encodeURI时未编码,而是需要关闭查询字符串并直接在其上调用encodeURIComponent()

注意:要使此代码段起作用,您需要打开“推文”'链接在新标签中,因为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>
&#13;
&#13;
&#13;