0

我对 javascript陌生,但我已经设法将不同的代码片段和论坛帖子中的以下内容拼接在一起:

var s = document.createElement("script");
s.src = "http://service.somewebsite.com/?api-key=4P1k3y5R4w50m3";
document.getElementsByTagName("body")[0].appendChild(s);

但是 - 它不起作用。

源属性显然不是真实的(服务要求我不要共享 API 密钥),但是将实际的属性粘贴到浏览器中,我得到了我想要的精确脚本 - 带有正确的回调和一切。

我觉得奇怪的是这段代码不起作用,因为非常相似

var i = document.createElement("img");
i.src = "http://i.imgur.com/TsCGbsy.jpg";
document.getElementsByTagName("body")[0].appendChild(i);

...执行得很好,当它取代它时。关于更改脚本元素的来源,有什么我不知道的,还是我忽略了其他什么?

附带说明:我希望最终让“s.src”依赖于一些变量,如方法、api-key 等(这就是我这样定义它的原因)。如果有人对此有其他优雅的解决方案,我也将不胜感激。任何关于语法等的提示也非常受欢迎。

提前感谢您对此提供的任何帮助!

编辑:我可能应该提到我正在尝试从包含在回调函数中的 JSON 对象组成的源中执行代码。链接本身工作正常,使用时功能正常执行

<script src = "http://service.somewebsite.com/?api-key=
k3y&callback=myFunction">
</script>

我基本上是在尝试做同样的事情,只是将 (src) 从一个字符串和一个或多个变量拼接在一起。

4

1 回答 1

1

Try using setAttribute:

var s = document.createElement('script');
s.setAttribute("type","text/javascript");
s.setAttribute("src", "http://service.somewebsite.com/?api-key=4P1k3y5R4w50m3");
于 2013-04-16T00:19:53.027 回答