Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态js和jquery冲突_Jquery - Fatal编程技术网

动态js和jquery冲突

动态js和jquery冲突,jquery,Jquery,我们有一个HTML模板,它被许多应用程序共享。现在我们必须从供应商那里实现一些js,我们被要求在body标记后面放一个js引用,而js实际上使用document.getElementsByTagName('script')和insertBefore方法在head标记后面动态注入一些js,因此最终的html如下所示: <head> <script> A </script> <script> B </script> <

我们有一个HTML模板,它被许多应用程序共享。现在我们必须从供应商那里实现一些js,我们被要求在body标记后面放一个js引用,而js实际上使用document.getElementsByTagName('script')和insertBefore方法在head标记后面动态注入一些js,因此最终的html如下所示:

<head>
    <script> A </script>
    <script> B </script>

<body>
    <script> first </script>

A.
B
第一
问题,由于脚本A/B正在使用jQuery,而且这是一个模板html,使用此模板的应用程序可能会有其他一些不同的jQuery加载,我应该如何避免冲突?我知道我们应该使用$.noConflit方法,但我不确定如何做到这一点


我们不允许更改第一个/A/B脚本,因此我认为我们应该为这些人保留“$/jquery”。我还想确保每个应用程序加载的jQuery仍然可以使用$

哇,下面是在假设A/B是内部的/“您的”的情况下编写的。因为事实并非如此,后者并不严格适用——祝你好运


要编写与其他代码完全隔离的代码(即独立于其他地方的
$
jQuery
),请使用

一个简单的表单如下所示:

;(function ($) {           // Dependencies bound here (in parameters)
    // Rest of your code;
    // you can be assured that $ is for "your" jQuery
    // because it was bound/injected when the script was executed.
})(jQuery.noConflict())    // Dependencies injected here - immediately.
这使得隔离依赖项和“绑定”到特定对象变得很容易(ier)——在这种情况下,可以在运行此脚本后重新分配
jQuery
,这不会有什么区别,因为正确的jQuery对象已经绑定。如果需要,也可以轻松转换为(或不同的模块加载器)

只需确保在A/B脚本之前加载jQuery的“您的”版本,在C脚本之前加载“他们的”版本(如果需要)。请记住,默认情况下脚本元素的执行是同步的

<head>
    <script src="YourVersionOfJQuery"> </script>
    <script> A </script>
    <script> B </script>

<body>
    <script src="TheirDependenciesAndMaybeOldjQueryVersion"> </script>
    <script> /* other setup as required */ </script>
    <script> C </script>

A.
B
/*需要的其他设置*/
C

您可能需要“播放”不同的顺序。

对不起,我如何在注释中添加换行符?@Zhongmin不能:)使用反勾号表示代码、标记和分号,或者使用
\n
表示换行意图。A B/*根据需要进行其他设置*/C,这样我就不需要调用NoConflits方法了?我在头部有所有的js。