
因为这个 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 年 5 月 16 日 为什么会加载? 你又没执行 loadJquery 函数…… |
2 rogwan OP @jarlyyn 感谢,刚刚这段执行拷贝到外面去了,不过剪回来贴到 module.js 里面,还是也木有用啊? loadJquery( function() { $(function(){ alert("loadjQuery succeeded"); })(); } ); |
4 joe1213 2017 年 5 月 16 日 请复习一遍 Javascript |
5 jarlyyn 2017 年 5 月 16 日 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 年 5 月 16 日 一对 |
7 rogwan OP |
8 leadfast 2017 年 5 月 16 日 https://gist.github.com/leadfast/f76b06b35071ecdd8da62491a3fc8e75 之前 v2er 做的自动签到,你可以看看里面 loadAndExecute 方法的实现 |
9 SakuraKuma 2017 年 5 月 16 日 要不就直接调用, 要不就 IIFE。(function (){})(); |
10 milklee 2017 年 5 月 17 日 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) }) |