Jquery IE Ошибка - PullRequest
       2

Jquery IE Ошибка

0 голосов
/ 09 июля 2011

У меня написан Jquery, который отлично работает в Firefox и Chrome, но в 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-контейнер-большой') а также $ ( 'Главная кнопка-БТН-корзина ДИВ #')

Ответы [ 2 ]

0 голосов
/ 09 июля 2011

Вы сказали, что IE говорит, что console не определено в строке

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

Это совершенно правильно. console не является гарантированным встроенным объектом в браузерах, хотя многие браузеры предоставляют его. Вы, вероятно, хотите

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

... вместо этого. Там мы не принимаем значение , мы просто проверяем, существует ли оно.

Это область JavaScript, которая может немного запутать, но в основном, если вы попытаетесь принять значение неквалифицированной ссылки, которая действительно не объявлена ​​ где-либо , например,

if (foo) { ...

... это ошибка. Причина, по которой это может сбить с толку, заключается в том, что вы можете назначить на foo в точно такой же ситуации, и это будет допустимо (это будет Ужас неявных глобалов , но допустимо ). Точно так же вы можете с радостью принять значение свойства объекта, которое никогда не было определено:

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 на лету. (Подробнее об этом в этот другой вопрос (и ответ) здесь о переполнении стека.)

0 голосов
/ 09 июля 2011

Единственное, что я вижу без дополнительной информации, которая может вызвать некоторые сбои:

productAddToCartForm.submit();

Если IE не знает, что это такое, он, скорее всего, потерпит неудачу.Попробуйте обернуть его в синтаксис селектора JQuery-Safe:

$(productAddToCartForm).submit();

или:

// Assuming you have a <form id="productAddToCardForm"...>
$('#productAddToCartForm').submit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...