Javascript 动态加载jQuery并使用它
如果jQuery库尚未加载,如何正确加载它 somepage.html:Javascript 动态加载jQuery并使用它,javascript,jquery,Javascript,Jquery,如果jQuery库尚未加载,如何正确加载它 somepage.html: <script src="http://example.com/js/widget_init.js" type="text/javascript"></script> <script type="text/javascript"> if (typeof jQuery == 'undefined') { console.log('ERROR: NOT LOADED');
<script src="http://example.com/js/widget_init.js" type="text/javascript"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
console.log('ERROR: NOT LOADED');
}
else{
console.log('OK');
}
</script>
问题在于它不会等待jQuery加载,并且会显示如下错误:
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
console.log('ERROR: NOT LOADED'); // NOT LOADED
}
else{
console.log('OK'); // NEVER GOES HERE
}
</script>
if(typeof jQuery=='undefined'){
console.log('错误:未加载');//未加载
}
否则{
console.log('OK');//永远不会在这里使用
}
我也试过了,但没有任何效果:
document.write('<script src="/path/to/js/jquery.min.js" type="text/javascript"><\/script>');
document.write(“”);
如何等待jQuery加载,以便我可以使用它?附加jQuery脚本的代码将附加在检查它的
代码段之后。这就是.appendChild
的工作原理
方法的作用是:在指定父节点的子节点列表的末尾添加一个节点
资料来源:(强调矿山)
以下是两个解决此问题的选项:
如果可以在页面上插入HTML
您可以从中使用此代码段。它将检查另一个脚本是否已经加载了jQuery,如果没有,则将以内联方式加载它
window.jQuery | | document.write(“”)
只要把它放在你的头上或身体标签上,然后放在依赖它的脚本前面
如果需要在Javascript源代码中动态加载它
按照中的说明操作
附加jQuery脚本的代码将被附加到检查它的
片段之后。这就是.appendChild
的工作原理
方法的作用是:在指定父节点的子节点列表的末尾添加一个节点
资料来源:(强调矿山)
以下是两个解决此问题的选项:
如果可以在页面上插入HTML
您可以从中使用此代码段。它将检查另一个脚本是否已经加载了jQuery,如果没有,则将以内联方式加载它
window.jQuery | | document.write(“”)
只要把它放在你的头上或身体标签上,然后放在依赖它的脚本前面
如果需要在Javascript源代码中动态加载它
按照中的说明操作
附加jQuery脚本的代码将被附加到检查它的
片段之后。这就是.appendChild
的工作原理
方法的作用是:在指定父节点的子节点列表的末尾添加一个节点
资料来源:(强调矿山)
以下是两个解决此问题的选项:
如果可以在页面上插入HTML
您可以从中使用此代码段。它将检查另一个脚本是否已经加载了jQuery,如果没有,则将以内联方式加载它
window.jQuery | | document.write(“”)
只要把它放在你的头上或身体标签上,然后放在依赖它的脚本前面
如果需要在Javascript源代码中动态加载它
按照中的说明操作
附加jQuery脚本的代码将被附加到检查它的
片段之后。这就是.appendChild
的工作原理
方法的作用是:在指定父节点的子节点列表的末尾添加一个节点
资料来源:(强调矿山)
以下是两个解决此问题的选项:
如果可以在页面上插入HTML
您可以从中使用此代码段。它将检查另一个脚本是否已经加载了jQuery,如果没有,则将以内联方式加载它
window.jQuery | | document.write(“”)
只要把它放在你的头上或身体标签上,然后放在依赖它的脚本前面
如果需要在Javascript源代码中动态加载它
按照中的说明操作
成功加载jquery后,您只需要回调函数:
var loadJS = function(url, cb) {
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src",
url);
if (script_tag.readyState) {
script_tag.onreadystatechange = function() { // For old versions of IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
cb();//calling callback
}
};
} else { // Other browsers
script_tag.onload = cb;//calling callback function
}
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
};
只需使用jquery库路径和回调函数引用调用此函数:
loadJS(hostUrl + "/js/libraries/jquery.js", callback);
成功加载jquery后,您只需要回调函数:
var loadJS = function(url, cb) {
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src",
url);
if (script_tag.readyState) {
script_tag.onreadystatechange = function() { // For old versions of IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
cb();//calling callback
}
};
} else { // Other browsers
script_tag.onload = cb;//calling callback function
}
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
};
只需使用jquery库路径和回调函数引用调用此函数:
loadJS(hostUrl + "/js/libraries/jquery.js", callback);
成功加载jquery后,您只需要回调函数:
var loadJS = function(url, cb) {
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src",
url);
if (script_tag.readyState) {
script_tag.onreadystatechange = function() { // For old versions of IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
cb();//calling callback
}
};
} else { // Other browsers
script_tag.onload = cb;//calling callback function
}
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
};
只需使用jquery库路径和回调函数引用调用此函数:
loadJS(hostUrl + "/js/libraries/jquery.js", callback);
成功加载jquery后,您只需要回调函数:
var loadJS = function(url, cb) {
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src",
url);
if (script_tag.readyState) {
script_tag.onreadystatechange = function() { // For old versions of IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
cb();//calling callback
}
};
} else { // Other browsers
script_tag.onload = cb;//calling callback function
}
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
};
只需使用jquery库路径和回调函数引用调用此函数:
loadJS(hostUrl + "/js/libraries/jquery.js", callback);
JS是同步和中断器。因此,它只能逐行读取并等待
文档。从理论上讲,write
应该可以工作,因为这将阻止以下脚本的执行。
可能有问题,但这是一个非常糟糕的解决方案。最好为脚本的load
偶数添加一个listen,并将以下代码放入一个将由load回调调用的函数中;如果(typeof jQuery=='undefined'){console.log('BAD');}或者{console.log('OK');}它会说“BAD”。JS是同步和中断程序。因此,它只能逐行读取并等待文档。从理论上讲,write
应该可以工作,因为这将阻止以下脚本的执行。
可能有问题,但这是一个非常糟糕的解决方案。最好为脚本的load
偶数添加一个listen,并将以下代码放入一个将由load回调调用的函数中;如果(typeof jQuery=='undefined'){console.log('BAD');}或者{console.log('OK');}它会说“BAD”。JS是同步和中断程序。因此,它只能逐行读取并等待文档。从理论上讲,write
应该可以工作,因为这将阻止以下脚本的执行。
可能有问题,但这是一个非常糟糕的解决方案。最好是为