从外部资源中我获取了我需要在DOM中执行/加载的跟踪器的URL,但是在其中带有#的URL会在英镑符号后被切断,无论我尝试什么。我无法控制这些来自第三方的URL,我希望能够加载此URL而不对其进行任何修改。
示例网址:http://www.example.com/resource.js?param1=testvalue#a=b&c=d&f=g&js=.js
执行此URL后,将更改为:http://www.example.com/resource.js?param1=testvalue
我所分享的代码在所有情况下均有效,但上述网址除外。
原始代码:
$('#myElement').append('<SCRIPT language="JavaScript1.1" SRC="' + url + '"></SCRIPT>')
我也尝试过:
var s = document.createElement("script")
s.type = "text/javascript"
s.src = url
$('#myElement')[0].appendChild(s)
除了附加孩子的其他变化,我也尝试将其作为图像元素插入,但那也没有用。
我能找到的唯一其他帖子表明浏览器会这样做(jQuery Ajax Call on URL with Pound (Number) Sign)......看似合乎逻辑,但公司我们并不是该公司的第一个客户... < / p>
答案 0 :(得分:1)
所以你需要的是对网址进行编码,这样你就不会让浏览器解释原始参数。您可以查看此帖Encode URL in JavaScript?。也许可以查看一下文档,了解为什么需要这样做。(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent)。因此,您必须重定向到encodeURIComponent(url)或添加参数(link + encodeURIComponent(params))。