2011-07-08 75 views
-2

我有一些jquery写的,在firefox和chrome中工作正常,但在IE中抛出一个错误。jquery IE错误

这里是代码的部分,当取出允许脚本的其他部分将正常运行......(否则整个文件不是由IE读取)

var product_qty_is_zero = ExternalCustom_product_qty_is_zero; //'import' external variable from view.phtml 
var option_is_selected = false; 
var options_exist = false; 
if( ($(".options-container-big").length > 0) || ($(".options-container-small").length > 0) ) 
    options_exist = true; 

$('#main-button-btn-cart').mouseenter(function() { 
     //@ controlling backorder message 
     if(product_qty_is_zero) 
     { 
      $('#select-product-reminder').slideDown(300); 
      $('#select-product-reminder').text("product is purchaseable but on backorder"); 
      $('#select-product-reminder').css("background-color", "#c3c3c3"); 
     }           
}); 

$('#main-button-btn-cart').click(function() { 
    if(!option_is_selected && options_exist) 
     $('#select-product-reminder').slideDown(300); 
    else 
     productAddToCartForm.submit(); 
}); 



$('#select-product-reminder').slideUp(300); 
    option_is_selected = true; 

var image_info = ExternalCustom_image_info; //'import' variable from media.phtml 
    var image_link; 
    var $selected_value_variation = $('.selected').html(); 
    for (var i = 0; i < image_info.length; i++) 
    { 
     if(image_info[i][0] == $selected_value_variation) 
      image_link = image_info[i][1]; 
    } 
    $('#main-image').attr("href", image_link); 

如果任何人都可以看通过它,看看是否有任何常见的IE标记错误,并给我一些提示,将不胜感激!

注*我已经尝试过的类和DIV扩展,如 $( 'div.options容器-大') 和 $( '#DIV主按钮BTN-车')

+4

IE正在抛出什么错误,以及你在做什么导致它? – AlienWebguy

+1

您是否启动了Javascript调试器来查看可能引发异常的位置? – Suroot

+2

您的浏览器在问题中的偏好和判断是不必要的。 – N0Alias

回答

0

唯一没有更多的信息,我可以看到,可能会引起一些麻烦:

productAddToCartForm.submit(); 

如果IE不知道那是什么,它很可能会失败。尝试在其包装jQuery的安全选择语法:

$(productAddToCartForm).submit(); 

或:

// Assuming you have a <form id="productAddToCardForm"...> 
$('#productAddToCartForm').submit(); 
+0

productAddToCartForm是我相信给另一个外部JS文件的函数调用。坚持让我寻找它 –

+0

你不要那样调用函数。 submit()是附加到表单对象的函数。 – AlienWebguy

+0

好点。我想进一步道歉我的网络缺乏经验。我以为我看到一个函数在这里的magento结构中的文件集合中被类似地命名。 –

0

你说,IE浏览器说,console是上线

if (console) { ... // Error if `console` is not defined anywhere 

这是相当正确的未定义。 console不是浏览器上的保证内置对象,尽管许多浏览器都提供它。您可能想要

if (typeof console !== "undefined") { ... 

...改为。我们没有采取的值,我们只是检查它是否存在。

这是JavaScript的面积,可以得到一个有点混乱,但基本上,如果你尝试采取真的没有声明任何地方不合格的参考,例如价值

if (foo) { ... 

...这是一个错误。这可能会引起混淆的原因是,您可以在完全相同的情况下将指定为foo,并且这将是有效的(它将是The Horror of Implicit Globals,但是有效)。同样,你可以愉快地采取从来没有定义的对象属性的值:

var obj = {}; 
if (obj.foo) { ... // Not an error, we just don't go into the body of the `if` 

...因为这不是一个不合格的参考。但有了不合格的参考文献,这是一个错误。

那么为什么console在IE8和IE9上不合格,两者都有console.log等等?由于IE8和IE9没有console [或console.log] ,除非您的开发人员工具已打开。奇怪而真实。错,但是是真的。 :-)打开基本上是IE8和IE9插件的开发者工具,即时添加了console对象。 (有关堆栈溢出的更多信息,请参见this other question (and answer)。)

+0

谢谢你你的回复是有用的信息。唯一的问题是引发错误的代码(控制台)在页面的主体中,而我正在编辑的代码位于外部.js文件中。当我删除我的代码行时,不会发生此错误,但当我的代码行(包括上面的代码)包含在外部.js文件中时,它会以某种方式发生。 –

+1

这可能意味着远离您的代码的东西代码正尝试输出到调试控制台。你应该找到可疑的代码并修复它。或者你可以在你的代码执行前添加下面这行代码来修补环境:'if(!window.console){window.console = null;}'这样做会使得“if(console)”不会生成错误。 – jfriend00

+0

@ jfriend00:用什么? –