目前,我面临一些关于重复引用 3rd-party 库的严重问题,这会导致一些库出现故障。
这是第一个自定义元素。
<script src="../../bower_components/jquery/dist/jquery.js"></script>
<script src="../../bower_components/jquery-ui/jquery-ui.js"></script>
<dom-module id="jquery-ui-menu">
<script>
Polymer({
is: "jquery-ui-menu"
});
</script>
</dom-module>
这是另一个元素。
<script src="../../bower_components/jquery/dist/jquery.js"></script>
<script src="../../bower_components/jquery-ui/jquery-ui.js"></script>
<dom-module id="jquery-ui-popup">
<script>
Polymer({
is: "jquery-ui-popup"
});
</script>
</dom-module>
如您所见,这两个脚本标记都引用位于同一路径中的 jQuery。通常,浏览器应该加载 jQuery 2 次,这会导致一些严重的问题,如下面的代码。
当第二次加载 jQuery 时,所有注册的事件都将被清除。
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.3.js"></script>
<script type="text/javascript">
$(window).on('test', function (){alert('test!');});
</script>
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.3.js"></script>
<script type="text/javascript">
$(window).trigger('test');
</script>
我认为这不是 jQuery 或任何其他第三方库的错误。但这是聚合物的一个严重问题。允许元素加载重复脚本完全是胡说八道。
你有什么实用的方法来解决这个问题吗?
请记住,这两个元素的源代码可能位于不同的存储库中,并且不应该相互了解。
谢谢,