繁体   English   中英

从javascript文件中动态包含javascript代码

[英]Dynamically include javascript code from within javascript file

我将以下脚本(位于我自己的服务器上)插入第三方的外部页面:www.test.com/test.html:

<script type="text/javascript">
(function() {
  var protocol = (("https:" == document.location.protocol) ? "https://" : "http://");
  var ttScript = document.createElement('script');ttScript.async = true;
  ttScript.src = '//www.example.com/script/mycode.js';
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ttScript);
})();
</script>

这是我要动态注入的另一个脚本,请注意,不能仅将其添加到上述脚本中! 我希望该脚本可以动态使用。 完整的代码,稍后将存储在对象message.jsScript

<script type="text/javascript">
var tt_totalordervalue;
function tt_getordervalue(){
    tt_totalordervalue=$('#subtotal');
    console.log(tt_totalordervalue);
}
</script>

在文件mycode.js

我想动态添加上面的脚本,并调用在tt_getordervalue定义的函数tt_getordervalue ,我现在尝试如下操作。 请注意,我还想要分配变量的值tt_totalordervalue这是在动态脚本定义,在我的一个变量mycode.js

(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(message.jsScript);
console.log('script added');
tt_getordervalue();
console.log('function called');
var val = tt_totalordervalue;

但是,我随后收到错误消息Uncaught NotFoundError: Failed to execute 'appendChild' on 'Node': The new child element is null.

为什么?

以下是Mac上chrome上的作品(对不起,太懒了,无法交叉测试):

var script = document.createElement('script');
script.innerHTML = 'window.doStuff = function(){alert("do")}';
document.getElementsByTagName('body')[0].appendChild(script);
doStuff();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM