
因为这个 module.js 文件依赖 jQuery 库,所以就在这个 module.js 中动态加载 jQuery (如果引用 module.js 的页面已经引用了 jQuery 就不加载,否则就加载 jQuery )。这个 module.js 里这样写为什么加载不了:
function loadJquery() { if(!(window.jQuery)) { var s = document.createElement('script'); s.setAttribute('src', 'http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js'); s.setAttribute('type', 'text/Javascript'); document.getElementsByTagName('head')[0].appendChild(s); } } $(document).ready(function () { var module = ... }); 测试了下,这样 html 页面(本身没有引用 jQuery )引用 module.js 文件时,并没有提前加载 jQuery 库。
1 jarlyyn 2017-05-16 14:25:25 +08:00 为什么会加载? 你又没执行 loadJquery 函数…… |
2 rogwan OP @jarlyyn 感谢,刚刚这段执行拷贝到外面去了,不过剪回来贴到 module.js 里面,还是也木有用啊? loadJquery( function() { $(function(){ alert("loadjQuery succeeded"); })(); } ); |
3 dont27 2017-05-16 14:59:36 +08:00 @rogwan = =原文主体 loadJquery 并没有声明以及使用函数参数,为什么你下面回复又带上了个函数参数(又不会执行到)…… |
4 joe1213 2017-05-16 15:03:43 +08:00 请复习一遍 Javascript |
5 jarlyyn 2017-05-16 15:07:19 +08:00 function loadJquery() { if(!(window.jQuery)) { var s = document.createElement('script'); s.setAttribute('src', 'http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js'); s.setAttribute('type', 'text/Javascript'); document.getElementsByTagName('head')[0].appendChild(s); } }() 最后带一堆括号,表示执行 |
6 jarlyyn 2017-05-16 15:07:34 +08:00 一对 |
7 rogwan OP |
8 leadfast 2017-05-16 16:12:25 +08:00 https://gist.github.com/leadfast/f76b06b35071ecdd8da62491a3fc8e75 之前 v2er 做的自动签到,你可以看看里面 loadAndExecute 方法的实现 |
9 SakuraKuma 2017-05-16 17:06:13 +08:00 要不就直接调用, 要不就 IIFE。(function (){})(); |
10 milklee 2017-05-17 00:32:32 +08:00 function loadJquery (cb) { if (!window.jQuery) { var s = document.createElement('script') s.src = 'http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js' s.Onload= cb document.head.appendChild(s) } else { cb() } } loadJquery(function () { alert(typeof jQuery) }) |