【问题标题】:JSFiddle not working in Safari 4.0.5 on windowsJSFiddle 在 Windows 上的 Safari 4.0.5 中不起作用
【发布时间】:2011-08-09 23:31:41
【问题描述】:

这是我第一次在 Safari 中尝试 JSFiddle。 JSFiddle 在 Safari 4 中无法正常工作是否有一些愚蠢的原因?确实有人报告说 Safari 5 运行良好。那么我在这里错过了什么?

JavaScript:

$(document).ready(function(){
    $("#productSize").change(function(){
        var me = $(this);
        var avail = me.find("option:selected").html().split("-")[1].trim();

        $("#quantity option").each(function() {
            $(this).remove();
        });

        for(var i=1; i<= avail; i++) {
            $("#quantity").append("<option>"+i+"</option>");
        }
    });
});

HTML:

<label>Sizes
    <select name="item_options[product_size]" id="productSize">
        <option value="s">small - 10</option>
        <option value="m">medium - 1</option>
        <option value="l">large - 5</option>
        <option value="xl">extra large - 10</option>
    </select>
</label>
<label>Quantity
    <select name="quantity" id="quantity">
    </select>
</label>

JSFiddle 演示问题:jsfiddle

更新: 我在所有其他浏览器中都在尝试这个,在所有浏览器中都发现了不同的行为。这正是它在 Firefox 中应该做的。没问题。 IE 似乎不喜欢我调用 trim() 的方式,所以我更改了 JSFiddle 以适应这种情况。

$(document).ready(function(){
    $("#productSize").change(function(){
        var me = $(this);
        var myText = me.find("option:selected").text().split("-")[1];
        var avail = parseInt($.trim(myText), 10);

        $("#quantity option").remove();

        for(var i=1; i<= avail; i++) {
            $("#quantity").append("<option value='"+i+"'>"+i+"</option>");
        }
    });
});

Updated JSFiddle 这已经过测试,可以在 IE、FF、Chrome 中运行,但我仍然什么也没得到,$(document).ready 和 .change() 甚至在 Safari 4 中都无法执行。

更新 #2 为了进一步澄清,这个 Jquery 代码不在 JSFiddle/safari 4.0.5 中运行。我什至没有收到警报,所以 .change() 没有运行...

$(document).ready(function(){
    $("#productSize").change(function(){
        alert("Hello World");
    });
});

【问题讨论】:

  • 仅供参考 - 它适用于 Windows 7 上的 Safari 5.1
  • 它对我使用 Safari 4 没有任何帮助。事实上,除非它是一个非常简单的警报(“hello”),否则我无法让任何 JSFiddles 在 Safari 4 中工作。
  • 感谢马特的编辑,但问题不在于代码在 Safari 中不起作用……实际上,如果我只是加载一个页面,它就会起作用。我所追求的是为什么当我在 Safari 4.0.5 的 JSFiddle 中加载相同的代码时不能工作。
  • @brenjt 你在使用 Safari 4.x 吗?
  • @kasdega 啊,我使用的是 5.0,我一定是更新了我的 Safari 并没有意识到。对不起。

标签: javascript jquery html safari jsfiddle


【解决方案1】:

试试 jsFiddle JSLint 按钮 - 它显示了几个我认为会导致显示问题的错误。

【讨论】:

  • $(this).remove(); - 这是未定义的。
  • 我没有收到任何 JSLint 错误。 $(this).remove();绝对应该存在。
  • 我仍然收到您更新的 Fiddle jsfiddle.net/hqLPp/8 的错误 - 错误是:“错误:第 9 行字符 17 处的问题:这是未定义的/隐含的全局:$ 1,2,3, 5,7 / 未使用的变量:avail 2 "change" 注意:我已经用正斜杠替换了换行符。
  • 试试我更新#2中的javascript。基本上删除所有 javascript 代码,并在下拉更改时尝试弹出警报。这是超级简单的东西,Safari 不这样做。我想知道这是否是 JSFiddle 的错误。
【解决方案2】:

试试这个

$(document).ready(function(){
    $("#productSize").change(function(){
        var me = $(this);
        var avail = parseInt(me.find("option:selected").text().split("-")[1].trim());

        $("#quantity option").remove();

        for(var i=1; i<= avail; i++) {
            $("#quantity").append("<option value='"+i+"'>"+i+"</option>");
        }
    });
});

【讨论】:

  • 同样的结果。在 Safari 4.0.5 的 JSFiddle 中执行此操作时,我什么也没得到。
【解决方案3】:

在我看来,JSFiddle 和 Safari 4.0.5 存在限制。我什至无法让最简单的选择器工作并启动一个非常简单的绑定。

This 适用于我尝试过的所有浏览器(FF 多个版本、IE 7 和 8、Chrome 12.0.x 和 Safari 5.1)。如果有人能解释为什么我很想听到它,否则我只会假设这是 Safari 4 或 JSFiddle 中的一个错误。无论哪种方式,我都在使用更新的浏览器。

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    相关资源
    最近更新 更多