jquery noConflict仅在IE8中不起作用

我有一个使用prootype框架的网站,我希望使用jquery插件。 一切都不适用于IE8。 它在ie7中工作让我感到惊讶。 知道什么可能是错的吗?

IE8给我的对象不支持这个属性或方法,其中行jQuery.noConflict(); 是

    jQuery.noConflict(); function OpenUp(sURL){ window.open(sURL,null,'height=560,width=820,status=yes,toolbar=yes,menubar=yes,location=yes,resizable=yes,scrollbars=yes',false); } jQuery(document).ready(function($) { $("head").append(""); css = $("head").children(":last"); css.attr({ rel: "stylesheet", type: "text/css", href: "/my/docs/jquery.simplyscroll.css" }); $("#scroller").simplyScroll({ autoMode: 'loop', framerate: 1, speed: 1 }); });  

我也厌倦了以下内容: var $j = jQuery.noConflict(); var j = jQuery.noConflict(); var $j = jQuery.noConflict(); var j = jQuery.noConflict();

everythig只在IE8中工作。

我也使用jQuery-1.4.4.js遇到了这个问题。 除IE8外,一切正常。 IE8无法识别jQuery()。 我能够通过在加载Prototype之前加载jQuery并运行$ .noconflict()来解决问题,并且它在我的所有测试浏览器(包括IE8)上运行良好。 这个序列与jQuery文档相反,因此我很担心它。 在jQuery网站上找不到任何关于它的东西。

t22harris

我能够解决这个问题的唯一方法是,对于IE8(这是唯一一个有问题)和其他浏览器,在初始化其他库后立即将jQuery和noConflict()调用放在头部。 像这样:

…后跟任何其他使用jQuery或Prototype的脚本。

我一直有类似的问题。 我目前使用的解决方案是将$变量保存在临时变量中,加载jquery(我从js代码加载jquery),运行jquery依赖代码(使用jQuery.noConflict),将$ variable设置回来。

它很脏,但它似乎已经为我做了伎俩。

添加jquery(如果需要)的函数是:

 function getJQueryAndGo(callback) { var thisPageUsingOtherJSLibrary = false; var tempDollar = $; // Only do anything if jQuery isn't defined if (typeof jQuery == 'undefined') { if (typeof $ == 'function') { thisPageUsingOtherJSLibrary = true; } loadToHead('script','http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js', function() { if (typeof jQuery=='undefined') { //alert('Super failsafe - still somehow failed...') } else { jQuery.noConflict(); (function($) { callback($); })(jQuery); } }); } else { // jQuery was already loaded jQuery.noConflict(); // This may not be necessary (function($) { callback($); })(jQuery); } $ = tempDollar; } 

loadToHead只是将脚本加载到head标签中,并在加载脚本时运行回调函数。

我在网上发现了大部分代码,并对其进行了调整。 不幸的是,我不记得现在在哪里给予信任。

我曾经有一个类似的问题,并通过使用模拟ie7元标记解决它

  

我不确定这是否是最好的工作。

刚遇到同样的问题。 IE 8不喜欢:

 var jQuery = jQuery.noConflict(); 

改为:

 var jq = jQuery.noConflict(); 

工作得很好。

过去,IE8在安装了多个IE版本的机器上遇到了奇怪的问题。 在我的情况下,当我尝试通过javascript在新窗口中打开链接时出现错误。 相同的代码在IE6和7上运行良好, 安装了IE8的机器运行良好。

这是我也发现的一个问题。 我修复它的方法是将我的jQuery升级到1.4。 版本1.3.2在IE8上使用较新的原型失败。 对不起,这个答案很晚。

我有完全相同的错误1.4.4和1.4.3加载jquery原型后,只在IE8,甚至在Ie7或Ie6 Jquery 1.4解决了这个问题。