2010-05-13 95 views
7

我有一个网站使用prootype框架,我期待使用jquery插件。一切工作只是不在IE8中。它在ie7中令我惊奇。任何想法可能是错的?jquery noConflict不能在IE8中工作

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

<script src="/my/docs/jquery.js" type="text/javascript"></script> 
<script src="/my/docs/jquery.simplyscroll.js" type="text/javascript"> </script> 
<script type="text/javascript"> 
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("<link>"); 
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 
    }); 
}); 
</script> 

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

everythig单独的作品只是没有在IE8。

+1

你能显示完整的代码,包括你在哪里包含jquery和noconflict插件吗? – 2010-05-13 21:59:40

+0

我编辑代码。我在脚本中使用了脚本src。 – slik 2010-05-14 06:01:19

+0

如果noConflict()被延迟调用,似乎会发生这种情况。另见http://forum.jquery.com/topic/jquery-and-prototype-conflicts-in-ie8-when-loading-jquery-after-settimeout-noconflict-doesn-t-help(等待时间适度这个评论) – ripper234 2011-09-15 23:56:06

回答

1

香港专业教育学院在过去一个simular问题,并通过模拟IE7的meta标签

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

林不知道这是否是周围最好的作品,虽然它周围的工作。

+1

不要拿这个人,但这是一个可怕的想法。 “noConflict”函数在IE8中正常工作。 – Pointy 2010-05-13 23:49:48

0

我以前在安装多个版本IE的机器上使用IE8时遇到了奇怪的问题。在我的情况下,当我尝试通过javascript在新窗口中打开链接时,弹出一个错误消息。相同的代码在IE6和7上运行良好,并且只有的计算机只有安装的IE8运行良好。

0

这是我也发现的一个问题。我修正它的方式是将我的jQuery升级到1.4。 IE8版本更新版本1.3.2失败。对不起,这个答案很晚。

6

我跑到这也使用jQuery-1.4.4.js。一切工作正常,除了在IE8。 IE8不承认jQuery()任何东西。我能够通过加载jQuery并在加载Prototype之前运行$ .noconflict()来解决问题,并且它在我的所有测试浏览器(包括IE8)上运行良好。这个序列与jQuery文档相反,因此我对此感到紧张。在jQuery网站上找不到关于它的任何内容。

t22harris

+0

我可以确认当Prototype首先被加载时,IE8下的jQuery 1.4.4出现null对象错误。我现在首先加载jQuery,并立即执行'noConflict()',现在我的应用程序再次运行! – 2010-12-20 19:05:16

+0

谢谢,在其他库解决它之前,将jQuery和'$ .noConflict()'调用移动。同样的问题和解决方案适用于jQuery-1.5。在我看来,它与IE的document.ready检测有关。 – meyertee 2011-02-07 15:51:22

0

我有1.4.4和1.4.3装载jQuery的确切同样的错误原型后,仅在IE8,甚至没有在IE7或IE6 jQuery的1.4解决了这个对我来说。

2

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

<script type="text/javascript" src="/path/to/prototype.js"></script>

<script type="text/javascript" src="/path/to/jquery.js"></script>

<script type="text/javascript">var $j = jQuery.noConflict(); </script>

...其次是请使用jQuery的原型或任何其他脚本。

2

我一直有类似的问题。我目前使用的解决方案是将$变量保存在一个临时变量中,加载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标签的地方,并加载脚本时运行的回调函数。

我在网上找到的这段代码大部分都是在这里找到的。不幸的是,我不记得现在在哪里给予信贷。

1

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

var jQuery = jQuery.noConflict(); 

将其改为:

var jq = jQuery.noConflict(); 

工作的罚款。