3

我写了一个 jQuery 插件,比如说jquery.plugin.js. 我想在大量网站上使用这个插件。

我想要做的是在其顶部编写一段 js 代码,jquery.plugin.js将加载jquery.main.js并执行它,以便$jquery.plugin.js.

谢谢。

4

5 回答 5

1

您可能想要做的是在 js 中创建一个新标签

script = document.createElement('script');
script.src = 'URL-TO-JQUERY';

然后将该元素附加到第一个标记之前。

document.body.insertBefore(document.getElementsByTagName('script')[0], script);

这很可能会起作用,因为脚本是在任何其他 js 之前插入的。(头部除外)

是的,只是一个检查 jQuery 是否存在的间隔:

interval = setInterval(check, 100);
function check(){
  if($.version){
    // Exec script
  }
}
于 2012-11-16T06:42:52.437 回答
1

此页面可能对您有用

http://code.google.com/p/jquery-ajaxq/

使用此脚本,您可以按顺序使用文件

于 2012-11-16T07:17:12.227 回答
0

只需将jquery.main.js上面的jquery.plugin.js. 如果您按此顺序放置脚本标签,它应该可以工作。

<script src="jquery.main.js"></script>
<script src="jquery.plugin.js"></script>

如果您无法完全控制 html 或者 jQuery 也可能从其他地方加载,请执行此操作以检查它是否已加载,并且仅在需要时加载。

从谷歌加载

if (typeof jQuery == 'undefined') {  
    document.write('<script type="text/javascript" src="http://www.google.com/jsapi"></script>');
    document.write('<script type="text/javascript">');
        google.load("jquery", "1.4.2");
    document.write('</script>');
}

从同一台服务器加载

if (typeof jQuery == 'undefined') {  
    document.write('<script type="text/javascript" src="path/to/jquery.min.js"></script>');
}
于 2012-11-16T06:41:57.690 回答
0

仅在已经加载 jQuery 时才有效,

$.when($.getScript("path_to_script")).then(function() {

   alert("loaded");
})​

小提琴 - http://jsfiddle.net/fLuDd/

编辑

var fileref = document.createElement('script')
fileref.setAttribute("type", "text/javascript")
fileref.setAttribute("src", 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js')
document.getElementsByTagName("head")[0].appendChild(fileref)


var t = setInterval(function() {
    if (typeof(jQuery) == 'function') {
        alert("jquery loaded");
        clearInterval(t);
    }
}, 2000);​

小提琴 - http://jsfiddle.net/fLuDd/1/

于 2012-11-16T06:44:46.450 回答
0

有一些 AMD 软件包可以满足您的需求,例如 requirejs,但是……您必须先加载它们!

您可以使用轮询技术(动态加载 jQuery 并轮询直到 $ 存在),但不是很优雅或高效。

您还可以将 onload 事件处理程序附加到动态 jQuery 脚本,这将在加载 jQuery 后触发您的插件。当然,这样的事件处理程序存在跨浏览器兼容性问题,所以用 jQuery 编写它们更容易。

底线:这很麻烦,通常最好只写两个脚本标签。

PS:以上一些技术在这篇文章中有解释:http: //www.stevesouders.com/blog/2008/12/27/coupling-async-scripts/

于 2012-11-16T07:15:45.430 回答