繁体   English   中英

是串联从另一个“导入”一个JS库的唯一方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM