2013-07-26 56 views
0

我们有被加载到通过谷歌双击网站动态adbanner。使用JavaScript来创建jQuery的链接

我们使用一些jQuery的代码,从而部分的设置,我们检查,如果一个网站正在运行jQuery的,如果没有,我们使用Javascript功能来添加一个链接到我们的jQuery文件。

这是做得很好,但我仍然收到一个错误“未捕获的ReferenceError: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); 
} 
+0

要补充的CDN? –

+3

_“我们检查一个网站是否正在运行Jquery,如果没有,我们使用Javascript来添加一个链接到我们的Jquery文件”_ - 这是明智的吗?如果页面确实已经拥有jQuery,那么您不会添加自己的版本,但是已经包含的版本太旧或者新版本与您的代码兼容? – nnnnnn

+1

使用typeof,'if(typeof(jQuery)===“undefined”)' –

回答

6

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

当你刷新,js/jquery-1.8.3.min.js可能已经缓存,因此将加载速度更快,所以你看不到的错误。

的解决方法是换你的JavaScript成一次的jQuery已经使用load事件处理程序加载调用的函数。这里是我从this tutorial改编的一个例子。

working example。另外,正如几位评论家指出的,许多网站在iframe中放置横幅广告,以防止广告“污染”您的网页与他们的图书馆。