兼容模式下的Internet Explorer 9显示错误

时间:2011-08-16 11:27:21

标签: javascript jquery internet-explorer-9

在IE 9中测试我的jQuery脚本时,它在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,chr​​ome。我不明白。 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次编辑] 我在我的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 个答案:

答案 0 :(得分:2)

我找出了我的问题。 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

所以我改变了之前的代码

$('input').clone() 

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

它解决了我的问题。

谢谢大家。

答案 1 :(得分:0)

只是一个猜测,但你在某个地方使用代码中的$ .error()吗?如果是:不要使用它。


<edit>

但是,此错误来自jQuery.error()

原始错误功能如下所示:

error: function( msg ) {
        throw msg;
    }

您可以在没有jquery的情况下进行测试:

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

你会得到同样的错误。

如果您不使用jQuery.error(),可能会使用一些使用它的插件。 您可以通过在嵌入式jquery.js后执行以下命令来覆盖此(错误?)函数:

jQuery.error=function(){}

</edit>

答案 2 :(得分:0)

jQuery.error()(作为参数传递的throws消息)与AJAX调用中指定的error处理程序完全不同。

jQuery.error()使用internally by jQuery(搜索“error(”)。您应该调试代码并按照堆栈跟踪查找哪些方法正在调用错误的jQuery方法。 / p>