所以我遇到的问题只是间歇性地发生,而且只在 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/