Internet Explorer 9 в режиме совместимости показывает ошибку - PullRequest
4 голосов
/ 16 августа 2011

При тестировании моего скрипта jQuery в IE 9 он показывает ошибку в jquery-1.6.2.js -

SCRIPT5022: Exception thrown and not caught 
jquery-1.6.2.js, line 548 character 3

Мой js-файл раньше работал без проблем в других браузерах - firefox 3.6, 5.0, opera 11, chromium, chrome. Я не понимаю. Есть ли ошибка в исходном коде jquery или в моем js-файле? Как мне это найти?

Прошло не так много времени с тех пор, как я начал работать в этой области, поэтому, пожалуйста, я буду очень признателен за некоторые идеи.

Заранее спасибо.

[редактировать] Я добавил полный код. Я учился у: http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-jquery-image-cropping-plug-in-from-scratch-part-ii/

Я не знаю, какую часть добавить. Весь код не помещается в представление stackoverflow. говорит "тело ограничено 3000 символов; вы ввели 42121"

[2-е редактирование] Я использовал «error» в своем ajax-сообщении.

    //jquery ajax submit for resizing
    function submit(myform,e){
        $n.val($image.attr('src').replace(/^[^,]*\//,''));

        var mydata = myform.serialize();
        $.ajax({
            url: $myform.attr('action'),
            cache: false,
            type:$myform.attr('method'),
            data: mydata,

            success: function(response){
                var img = $("<img />").attr('src', 'images/'+response+'?'+ e.timeStamp) //<-- img name here
                    .load(function() {
                       if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
                           alert('Incorrect image.');

                       } else {
                           $("#result").html(img); //<-- put cropped img here.

                       }
                    });


                    },
            error: function(){ //<-- error used here
                        $('#result').html("Err. Loading Image");
                    }
        });
    };

Ответы [ 3 ]

2 голосов
/ 18 марта 2012

Я отследил свою проблему. IE предотвратил изменение атрибута, что привело к ошибке jQuery.

 Note: jQuery prohibits changing the type attribute on an or element and
 will throw an error in all browsers. This is because the type attribute 
 cannot be changed in Internet Explorer." 

из http://api.jquery.com/attr, сразу после 1-го предупреждения.

Поэтому я изменил свой код с более раннего

$('input').clone() 

до

$('<input />').attr({'type':'hidden'})

и это решило мою проблему.

Спасибо всем.

0 голосов
/ 16 августа 2011

jQuery.error() (что throws сообщение, переданное в качестве аргумента), полностью отличается от обработчика error, указанного в вызове AJAX.

jQuery.error()используется внутренне jQuery (ищите "error ("). Вы должны отладить свой код и следовать трассировке стека, чтобы найти, какой из ваших методов вызывает метод jQuery, который является ошибочным.

0 голосов
/ 16 августа 2011

Просто предположение, но вы где-то используете $ .error () внутри своего кода?Если да: не используйте его.


<edit>

Однако эта ошибка происходит от jQuery.error () .

Исходная функция ошибок выглядит следующим образом:

error: function( msg ) {
        throw msg;
    }

Вы можете протестировать ее без jquery:

(function( msg ) {
        throw msg;
    })('errormessage');

Вы получите ту же ошибку.

Если вы не используете jQuery.error(), возможно, вы используете какой-нибудь плагин, который его использует.Вы можете переопределить эту (ошибочную?) Функцию, выполнив следующее сразу после встроенного jquery.js:

jQuery.error=function(){}

</edit>
...