Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从javascript下载外部javascript库依赖项?_Javascript - Fatal编程技术网

如何从javascript下载外部javascript库依赖项?

如何从javascript下载外部javascript库依赖项?,javascript,Javascript,情景: 我有一个用户可配置的脚本。例如,代码路径A使用普通javascript,路径B使用jquery 代码 function MyFunction(choice) { if (choice == a) { //do some stuff } if (choice == b) { // somehow load jquery // do stuff that depends on jquery being loaded

情景:

我有一个用户可配置的脚本。例如,代码路径
A
使用普通javascript,路径
B
使用
jquery

代码

function MyFunction(choice) {
    if (choice == a) {
      //do some stuff
    }

    if (choice == b) {
        // somehow load jquery
        // do stuff that depends on jquery being loaded
    }
}

我的困惑在路径
b
中<默认情况下,code>Jquery不在页面上(即页面上的任何位置都没有
)。但是路径B中的代码需要它来运行。是否可以加载JQuery,然后执行其余的代码

您可以修改DOM,只需将脚本添加到
头部(或其他任何地方)。这就是Facebook、Google Analytics/Plus和其他许多网站的工作方式

以下是分析代码的示例:

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-id-here', 'auto');
  ga('send', 'pageview');
</script>
添加后,中的参数将变为:

a=document.createElement('script')
那么这部分,

m=s.getElementsByTagName(o)[0];
a.async=1;
a.src=g;
m.parentNode.insertBefore(a,m)
查找文档中其他脚本的位置(第1行),将其设置为异步加载(第2行),将源设置为
g
参数,该参数为
'//www.google-analytics.com/analytics.js'
,最后插入它(第4行)


下面是一个简单的示例,其中包含一个
onload
侦听器,以便您知道它何时准备就绪:

var script=document.createElement('script');
script.async=1;
script.src='//www.google-analytics.com/analytics.js';
script.onload=函数(){
警报('已加载脚本!');
}

document.body.appendChild(脚本)我有一个解决方案。
仅仅因为您的代码中已经加载了jQuery,并不意味着您必须使用它。你两者都可以。你的问题是你需要在你的页面上有jQuery!这是你的
元素:


我想这解决了你的问题。如果没有,请提供更多细节。祝你好运

创建一个
标记并将其附加到DOM中,如下所示:

var script = document.createElement('script');
script.src = '/path/to/my/script.js';

document.body.appendChild(script);

script.onload = function () {
  console.log('Ready!');
  // Write your code that needs jQuery inside here
};

但这只能被视为一种临时解决方案……:)

那么,一旦我将它添加到头部,是否有一种好方法可以检查它何时下载,并且我可以运行我的其余代码?您应该能够使用
onload
onreadystatechange
来检查它是否已加载。添加了一个实时示例,以便您可以在实际操作中看到它。jQuery实际上在
$中使用ajax。getScript
函数可靠地触发
onload
事件
var script = document.createElement('script');
script.src = '/path/to/my/script.js';

document.body.appendChild(script);

script.onload = function () {
  console.log('Ready!');
  // Write your code that needs jQuery inside here
};