javascript跳行safari

javascript跳行safari,javascript,css,safari,Javascript,Css,Safari,所以我遇到的问题只是间歇性的,而且只发生在狩猎中 除了safari之外,这在所有测试过的浏览器中都有效。在safari中,当我在代码中设置了断点时,它总是有效的,但当我没有设置断点时,只有大约1/10的尝试 以下函数由单选按钮组的onchange调用 function anl_tabs_submit() { document.getElementById("cssload-loader").style.opacity = 1; document.getElementById("a

所以我遇到的问题只是间歇性的,而且只发生在狩猎中

除了safari之外,这在所有测试过的浏览器中都有效。在safari中,当我在代码中设置了断点时,它总是有效的,但当我没有设置断点时,只有大约1/10的尝试

以下函数由单选按钮组的onchange调用

function anl_tabs_submit() {
    document.getElementById("cssload-loader").style.opacity = 1;
    document.getElementById("anl_wholetable").style.opacity = 0.4;
    document.getElementById("anl_tab_form").submit();
    var radios = document.getElementsByName('tab');
    for (var i = 0; i< radios.length; i++){
        radios[i].disabled = true;
    }
}
在html中,单选按钮组模拟选项卡。我想要的是,当用户单击选项卡时,选项卡中的内容变暗,出现隐藏的奶嘴,然后提交该组所属的表单

如果我在代码中的不同位置放置警报,警报总是有效的,但是safari上偶尔会发生2个不透明度的变化

这是一个狩猎问题,还是我做错了什么

提前感谢,


杰夫

好吧,我把问题解决了。。。终于

在我到达提交行之前,Safari上的UI没有更新。下面是我如何修复它,以防将来有人遇到同样的问题:

function anl_tabs_submit(frm) {
    document.getElementById("cssload-loader").style.opacity = 1;
    document.getElementById("anl_wholetable").style.opacity = 0.4;
    window.setTimeout(function(){
        document.getElementById(frm).submit();
        var radios = document.getElementsByName('tab');
        for (var i = 0; i< radios.length; i++){
            radios[i].disabled = true;
        }
    }, 0);

}

重要的是window.setTimeout,它似乎给浏览器在继续运行脚本后半部分中的指令之前更新窗口的时间。

当DOM完全加载完毕时,是否会触发此代码?尝试在document.getElementByIdcssload-loader.style.opacity=1之前添加setTimeout;等待一秒钟,看看这是否有用。我会尝试一下,但当我将警报放在该元素之前时,它仍然被跳过,即使您在关闭警报之前等待了很长时间。仍然是间歇性的,但是会发生延迟,但是setTimeout中的函数在失败时不会发生,我认为这与DOM是否加载无关。我刚刚加载了页面,然后阅读了这里的问题,几分钟后又返回,在加载了很多分钟后,第一次点击页面仍然失败。我还发现Mac上的Safari就是这样,但iPhone上的Safari不是这样。
function anl_tabs_submit(frm) {
    document.getElementById("cssload-loader").style.opacity = 1;
    document.getElementById("anl_wholetable").style.opacity = 0.4;
    window.setTimeout(function(){
        document.getElementById(frm).submit();
        var radios = document.getElementsByName('tab');
        for (var i = 0; i< radios.length; i++){
            radios[i].disabled = true;
        }
    }, 0);

}