javascript 跳线 safari

标签 javascript css safari

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

除了 safari,这在所有经过测试的浏览器中都有效。在 safari 中,当我在代码中设置断点时,它一直有效,但当我没有设置断点时,每 10 次尝试中只有大约 1 次。

以下函数由单选按钮组的 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;
    }
}

被跳过的行是前 2 行:

document.getElementById("cssload-loader").style.opacity = 1;
document.getElementById("anl_wholetable").style.opacity = 0.4;

我在 html 中,单选按钮组模拟选项卡。我想要的是,当用户单击一个选项卡时,选项卡中的内容变暗,并且出现一个隐藏的奶嘴,然后提交该组所属的表单。

如果我在代码的不同位置放置警报,警报始终有效,但 2 个不透明度变化只是偶尔发生(在 safari 上)。

这是 Safari 浏览器的问题,还是我做错了什么?

提前致谢

杰夫

最佳答案

好吧,我终于解决了问题......终于!

在我到达提交行之前,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);

}

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

关于javascript 跳线 safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32468489/

相关文章:

html - 删除空白 (CSS) - Chrome 和 Safari OK - Firefox NOT

javascript - 有没有办法在 Android 中为 Safari 启用 JavaScript 错误/调试控制台?

ssl - 是什么导致 Safari 拒绝安全 SSL websocket ws ://?

javascript - 测试元素是否隐藏

javascript - 如何根据 ng-repeat 中两个日期之间的不同来过滤数据?

javascript - 取消选择数据表隐藏复选框

html - CSS 如何让位置绝对子级在父级之外可见并溢出 : hidden;

javascript - 更改文本颜色而不更改边框颜色

css - 背景图像应调整到内部的 div

javascript - 如何逻辑划分TD cell