我正在开发一个依赖于jQuery的javascript小部件.小部件可能会也可能不会加载到已加载jQuery的页面上.在这种情况下出现了许多问题......
如果网页没有jQuery,我必须加载自己的jQuery.然而,这样做时似乎有一个微妙的时间问题.例如,如果我的窗口小部件在jQuery完成加载和执行之前加载并执行,我会收到jQuery is not defined
错误.
如果网页确实有jQuery,我通常可以使用它.但是,如果jQuery版本是旧版本,我想加载自己的版本.但是,如果我自己加载,我需要以不踩它们的$
变量的方式来做.如果我设置jQuery.noConflict()
并且他们的任何脚本依赖$
,那么我刚刚打破了他们的页面.
如果网页使用另一个javascript库(例如原型),我也需要对原型的$
变量敏感.
由于以上所有,似乎更容易不依赖于jQuery.但是在我走这条路之前,我想先重写我的小部件代码.
我的代码的基本框架,包括时序错误和有时$
错误,如下:
<script type="text/javascript" charset="utf-8">
// <![CDATA
if (typeof jQuery === 'undefined') {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '{{ URL }}/jquery.js';
head.appendChild(script);
}
// ]]>
</script>
<script type="text/javascript" src="{{ URL }}/widget.js"></script>
Run Code Online (Sandbox Code Playgroud)
我的小部件具有以下结构:
(function($) {
var mywidget = {
init: function() {
...
}
};
$(document).ready(function() {
mywidget.init();
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
如果有任何指针或资源来实现可以在所有提到的环境中工作的小部件,那么他们将非常感激.
有关Firefox OS核心架构的信息吗?我不是指仅面向开发人员的信息.我对类似于Android的底层架构感兴趣:http://www.zdnet.com/blog/burnette/how-android-works-the-big-picture/515