Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
使用javascript创建Jquery链接_Javascript_Jquery - Fatal编程技术网

使用javascript创建Jquery链接

使用javascript创建Jquery链接,javascript,jquery,Javascript,Jquery,我们有一个动态广告横幅,通过谷歌双击加载到网站上 我们在代码中使用一些Jquery,因此作为设置的一部分,我们检查网站是否正在运行Jquery,如果没有,我们使用Javascript向Jquery文件添加链接 这是做得很好,但我仍然得到一个错误“uncaughtreferenceerror:jQuery未定义”我假设这是由于加载的顺序,但我不确定如何绕过这个问题。如果你刷新页面,一切都正常。问题似乎只发生在第一次加载时 此外,如果我打开一个新的浏览器窗口并再次加载页面,一切正常 下面是我们用于将

我们有一个动态广告横幅,通过谷歌双击加载到网站上

我们在代码中使用一些Jquery,因此作为设置的一部分,我们检查网站是否正在运行Jquery,如果没有,我们使用Javascript向Jquery文件添加链接

这是做得很好,但我仍然得到一个错误“uncaughtreferenceerror:jQuery未定义”我假设这是由于加载的顺序,但我不确定如何绕过这个问题。如果你刷新页面,一切都正常。问题似乎只发生在第一次加载时

此外,如果我打开一个新的浏览器窗口并再次加载页面,一切正常

下面是我们用于将脚本标记添加到头部的代码:

if(!window.jQuery)
 {

    var fm_j = document.createElement('script'); fm_j.type = 'text/javascript';
    fm_j.src = 'js/jquery-1.8.3.min.js';
    document.getElementsByTagName('head')[0].appendChild(fm_j);
 }

这是一个时间问题。当您这样动态加载脚本时,它们是异步加载的,不会阻止页面上javascript的进一步执行。这意味着在运行特定于jQuery的代码时,jQuery可能不会被加载

刷新时,
js/jquery-1.8.3.min.js
可能已被缓存,因此加载速度会更快,因此不会看到错误

解决方案是将javascript封装到一个函数中,该函数在jQuery使用
load
事件处理程序加载后调用。这是我改编的一个例子


此外,正如一些评论指出的那样,许多网站在iFrame中放置横幅广告,以防止广告“污染”其库的页面。

这是一个时间问题。当您这样动态加载脚本时,它们是异步加载的,不会阻止页面上javascript的进一步执行。这意味着在运行特定于jQuery的代码时,jQuery可能不会被加载

刷新时,
js/jquery-1.8.3.min.js
可能已被缓存,因此加载速度会更快,因此不会看到错误

解决方案是将javascript封装到一个函数中,该函数在jQuery使用
load
事件处理程序加载后调用。这是我改编的一个例子


此外,正如一些评论人士指出的那样,许多网站在iFrame内放置横幅广告,以防止广告“污染”其库中的页面。

iFrame可能是@flyersun更好的方式

它简单、简单、有效,请参见此处


iFrame本可以是@flyersun更好的方式

它简单、简单、有效,请参见此处


您是否在添加cdn??“我们检查网站是否运行Jquery,如果没有,我们使用Javascript添加到Jquery文件的链接”-这样明智吗?如果页面已经有jQuery,因此您不添加自己的,但是已经包含的版本太旧或太新,无法与您的代码兼容,该怎么办?使用typeof,
if(typeof(jQuery)=“未定义”)
这样的广告难道不能作为iFrame插入吗?你正在加载80KB和数万个JS代码作为横幅--?你在添加cdn吗?“我们检查网站是否运行Jquery,如果没有,我们使用Javascript添加到Jquery文件的链接”-这样明智吗?如果页面已经有jQuery,所以你不添加你自己的,但是已经包含的版本太旧或太新,与你的代码不兼容怎么办?使用typeof,
if(typeof(jQuery)==“undefined”)
这样的广告不会作为iFrame插入吗?你正在为一个横幅加载80KB和成千上万的JS代码?
function getScript(success) {

    var fm_j = document.createElement('script'); 
        fm_j.type = 'text/javascript';
        fm_j.src = 'js/jquery-1.8.3.min.js',
        done = false;

    // Attach handlers for all browsers
    fm_j.onload = fm_j.onreadystatechange = function () {
        if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {

            done = true;
            // callback function provided as param
            success();
        };
    };

    document.getElementsByTagName('head')[0].appendChild(fm_j);
};

if(!window.jQuery) {
    getScript(doSomething);
} else {
    doSomething();
}