是什么导致Javascript在不同的机器上采取不同的行动?

时间:2010-08-02 23:32:17

标签: javascript

我刚刚在论坛中添加了一项功能,当大多数用户看到并使用它时,少数人会报告奇怪的行为。我认为问题可能是由于浏览器缓存和ctrl + F5解决了一些,但有些无法修复它。 (这是一个简单的编辑按钮。)

即使问这个我也觉得很愚蠢,但JS是否有办法以某种方式在某些机器上工作?

编辑:已添加代码:

    insertTab: function()
{
    if( this.get_selection() == "" )
    {
            var val = prompt( "How many lines of tablature?", '');
            if( val == '' ) return true;

            val = parseInt(val);

            var txt = "[code]\n";

            while ( val > 0 )
            {
                txt += "------------------------------------------------------------------------------------------------" + "\n";
                txt += "------------------------------------------------------------------------------------------------" + "\n";
                txt += "------------------------------------------------------------------------------------------------" + "\n";
                txt += "------------------------------------------------------------------------------------------------" + "\n";
                txt += "------------------------------------------------------------------------------------------------" + "\n";
                txt += "------------------------------------------------------------------------------------------------" + "\n";
                txt += "\n";

                val--;
            }

            this.insert_text( txt + "[/code]" );
    }
    else
    {
        this.wrap_tags_lite( '[code]', '[/code]', 0);
    }
}

它完全适用于我亲自试过的每台电脑。

2 个答案:

答案 0 :(得分:2)

不幸的是,它并不是导致问题的机器,很可能是浏览器。在所有浏览器中,Javascript运行时引擎的实现方式略有不同,因此您可以在每个浏览器中获得稍微不同的行为。

IE,WebKit和Mozilla都表现得有些不同。在测试代​​码时,需要在所有浏览器上进行测试。另一种选择是使用像JQuery这样的库,它有点抽象出javascript跨浏览器编程的一些细微差别。

答案 1 :(得分:1)

这个答案专门用于解决缓存问题,我不能在没有看到代码的情况下对“其他”行为说太多。

当您在自动构建过程中(如果可能的话)或手动更改脚本时,您可以更新脚本引用,例如查看此页面(为简洁起见,我删除了type=""

<script src="http://sstatic.net/js/master.js?v=ad53a2ffc630"></script> 

它曾经是一个数字,签入的变更集或其他东西,我不确定来源,并且它确实无关紧要,只要它在构建发生变化时更新。我认为它现在是某种哈希,甚至更聪明,如果 文件没有改变,用户不会在版本更改时重新下载它。

重要的一点是在文件发生时进行了更改,并且由于查询字符串,浏览器将重新下载文件,因此无需 Ctrl + F5