jQuery在Mozilla Firefox上无法正常运行

时间:2010-08-26 12:26:17

标签: jquery asp.net-mvc firefox

使用Mozilla Firefox时,我的ASP.NET MVC应用程序出现问题。我使用的是JQuery,这段代码不起作用。在Google Chrome和IE 8中,一切都很好。怎么解决这个问题如有必要,我将发布部分JQuerycode

在站点母版页中,我包含脚本,如下所示:

 <script type="text/javascript" src="../../Scripts/jquery-1.3.2.js"></script>
 <script src="../../Scripts/jquery-1.3.2.js" type="text/javascript"></script>
 <script type="text/javascript" src="../../Scripts/ui.core.js"></script> 
 <script type="text/javascript" src="../../Scripts/ui.selectable.js"></script> 
 <script type="text/javascript" src="../../Scripts/ui/ui.accordion.js"></script>

<script type="text/javascript" src="../../Scripts/MicrosoftAjax.debug.js"></script>
<script type="text/javascript" src="../../Scripts/MicrosoftMvcAjax.debug.js"></script>


 <script type="text/javascript" src="../../Scripts/jquery.dataTables.js"></script>
 <script type="text/javascript" src="../../Scripts/ui/ui.datepicker.js"></script> 
 <script type="text/javascript" src="../../Scripts/jquery.bstablecrosshair.js"></script>



<script src="../../Scripts/jquery.jqGrid.min.js" type="text/javascript"></script>
<script src="../../Scripts/jqModal.js" type="text/javascript"></script>
<script src="../../Scripts/jqDnR.js" type="text/javascript"></script>

代码中最重要的部分不适用于Firefox:

     <script type="text/javascript">
     $(document).ready(function() {

    $('input:radio').click(function() {

        var num = "";
        var location = "";
        var loc = $("input:checked").val();
        var lenght = loc.lenght;
        var tmp = loc.substring(0, 2);

        if (tmp == "SA") {
            num = loc.substring(2, lenght);
            location = "SA";
        }
        if (tmp == "ST") {
            num = loc.substring(2, lenght);
            location = "STH";
        }
        if (tmp == "SH") {
            num = loc.substring(2, lenght);
            location = "SASTH";
        }
        if (tmp == "NE") {
            num = loc.substring(2, lenght);
            location = "NEW";
        }

        var article_number = $("input[id=" + num + "]").val();

        //alert(article_number +"  "+ num);

        $.post("/ImportXML/DevAccEditTempTable", { location: location, article_number: article_number, loc: num }, function(data) {
            if (data.error == "Error") {
                alert("Error: quantity is too large! ");
                window.location.href = "/" + data.redirect;

            }

            else {
                window.location.href = "/" + data.redirect;
            }
        }, "json");
    });
});
</script>

6 个答案:

答案 0 :(得分:2)

对于基本的Javascript / jQuery调试,请尝试以下方法:

<script type="text/javascript">
        alert("Javascript works!");

        $(document).ready(function(){
            alert("jQuery works!");
        });
</script>

如果您只获得第一个警报窗口,则表示引用jQuery的方式有问题。如果你没有在Firefox中获得任何一个窗口(但你在其他浏览器中都有),你需要确保在选项&gt;中打开Javascript。内容,你要确保没有插件会阻止Javascript。

(已编辑,因为原始帖子中添加了更多代码段:)

在您发布的第二个代码段中,“loc.lenght”应为“loc.length”。

$('input:radio').click(function() {

    var num = "";
    var location = "";
    var loc = $("input:checked").val();
    var lenght = loc.lenght;
    var tmp = loc.substring(0, 2);
    alert(loc.substring(2, lenght));

似乎行var lenght = loc.lenght;导致问题,因为loc.lenght可能没有返回您想要的值(因为lenght不是属性)。我在您的代码中添加了alert,它应该弹出您在本节后面的if语句中计算的字符串。您应该运行此代码,并在所有三个浏览器中使用alert来查看区别。

我不确定为什么这会在某些浏览器中运行,但不适用于Firefox。也许loc.lenght在IE 8和Chrome中返回0,但在Firefox中返回null,这会破坏整个计算。

答案 1 :(得分:1)

检查Firefox中是否禁用了Javascript。此外,请检查可能阻止某些Google网址的广告拦截器等FF插件,如果您让Google托管JQuery库,则可能会出现问题。

答案 2 :(得分:1)

你的问题很可能是你拼错了Lenght这个词。

var lenght = loc.lenght;&lt; - 应为loc.length

答案 3 :(得分:0)

Jquery在firefox上对我工作得很好,也许如果你发布的帖子给你带来了困难,社区可以指向你正确的方向。

答案 4 :(得分:0)

安装fiddler,浏览器的行为方式不同,有些是严格的,有些是松散的,你应该明白Chrome会在你不知道的情况下解决你的代码中的问题,而firfox可能不会。

检查Chrome调试器Ctrl-Shift-J并安装fiddler。

答案 5 :(得分:0)

如果发布的脚本是您正在使用的脚本,看起来您实际上并未包含jQuery。