[英]is concatenating the only way to 'import' one JS lib from another?
免责声明:JS新手
我有一个依赖于JQuery的JS小部件。 该小部件将被嵌入到第三方网站中,但我想出了如何避免在小部件托管页面上声明对jquery的依赖:
第三方页面:
<head>
<script
type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script
type="text/javascript"
src="http://mydomain/mywidget.js"></script>
</head>
mywidget.js
jQuery(document).ready(function() {
//do stuff
});
我宁愿不在3d派对页面中包含jquery.js,而是在mywidget.js中表达依赖性(以便我可以更改此依赖性或添加/删除其他人,而不必更新小部件托管页面)
我尝试添加:
var script = document.createElement('script');
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
到mywidget.js的顶部,但这没有用-jquery.js确实在页面加载时加载,但是无法识别“ jQuery”。
所做的工作是将jquery.js和mywidget.js连接到单个.js文件中。 但这似乎有些la脚-难道没有相当于吗?
import com.jquery.*;
谢谢!
在脚本中,在添加script元素后立即执行窗口小部件代码,但是它需要等待脚本也被下载并编译! 为此,请使用以下代码:
script.onload = function(){
// ------ Your widget code here ------
}
似乎关于jQuery
变量只有冲突。 您是否在脚本中使用noConflict模式? 无论如何,您都应该这样做,因为您不知道第三方网站已经使用了哪些其他框架。
要使用jQuery noconflict模式(加载jQuery后):
$.noConflict();
jQuery(document).ready(function($) {
//your js widget here
});
我要实现的第二件事是检查jQuery是否已加载。 可能是第三方网站已经在使用它:
if (typeof jQuery == 'undefined') {
//load jQuery here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.