加载jquery两次导致错误?
我有一个页面,其中正在加载jquery +其他js:
我正在加载标签如下:
$(document).ready(function(){ $("#tabs").tabs(); $("#tabs ul li a").corner('7px top'); var $tabs = $('#tabs').tabs(); $tabs.tabs('select', 0); dateValidation(); changeOption(); deleteConfirmation(); }); $(document).ready(function(){ $("#tabs").tabs(); $("#tabs ul li a").corner('7px top'); var $tabs = $('#tabs').tabs(); $tabs.tabs('select', 1); changeOption(); deleteConfirmation(); });
validationdate.js
是我自己构建的js,用于检查日期和其他内容。 它将此作为第一行:
document.write('');
问题:这是否正在生产中..这个页面出错并给出了JS错误。 这会导致标签不可点击。 这个错误间歇性地发生,我似乎无法在我的机器上重现它。 两台机器都使用IE浏览器。 在Firefox中也会出现错误,尽管在Firefox中没有出现小错误的东西。 我甚至还有一个没有显示任何JS错误的firebug。
我怀疑错误即将发生,因为validationdate.js
也在加载jquery-1.3.2.min.js
。 这可能是一个错误吗?
顺便说一句,我得到的JS错误是’exception被抓住但没有被抛出..线23’和第23行正在跟随
我真的没有选择,我愿意尝试一下。 以及在我的机器上重现的方法,以便我可以解决它!
首先回答你的问题, 是的 ,包括jQuery两次可能导致各种问题。
要修复它,这一行:
document.write('');
应该包装以检查jQuery是否已经存在而不是盲目地再次包含它,如下所示:
if (typeof jQuery == 'undefined') { document.write(''); }
然后,如果jQuery尚未在页面上,它将仅包含它。 有一点需要注意,如果你使用的是jQuery的不同 (可能更新)版本而不是validation代码的构建,那么有可能会有一些中断。
我花了几个小时搞清楚为什么使用jQuery.noConflict()不能正常工作……
只需使用var j$ = jQuery.noConflict();
然后在每次在该页面上使用Jquery时使用j $代替$。
如果你使用iframe将导致JQuery加载两次
1)为每个页面加载JQuery(即通过application.html.erb在Ruby on Rails中)和
2)iframe也是来自应用程序的页面,而不是外部站点的iframe。