Safari 12.1卸载未触发JavaScript

时间:2019-05-26 13:03:21

标签: javascript safari onload

我具有的JavaScript不能在Safari中启动,但可以在所有其他浏览器(iOS Safari,Chrome,Firefox,Opera,IE)上运行。

我已经在所有其他浏览器(iOS Safari,Chrome,Firefox,Opera,IE)上对此进行了测试,并且可以在Safari 11.1上运行。

HTML:

body onload =“ showdiv('Citizenship');”

Javascript:

    var pages = document.getElementsByClassName("page");

    function showdiv(id_page) 
    {
        for(var count_page=0; count_page<pages.length; count_page++)
        {
            str_id = pages.item(count_page).id;
            if (id_page == str_id)
            {
                document.getElementById(str_id).style.display = 'block';
                document.getElementById(str_id).focus();
            } // if (id_page == str_id)
            else
            {
                document.getElementById(str_id).style.display = 'none';
            } // if (id_page == str_id) else
        } // for(var count_page=0; count_page<pages.length; count_page++)
    } // function showdiv(id_page) 

我没有收到控制台错误消息。

该页面位于http://www.ocetacea.net/MAT/EDLT6616/DigitalCitizenship/index.html

我的目标是仅拥有“什么是数字公民身份?”页面加载后。

1 个答案:

答案 0 :(得分:1)

在Safari中,似乎onload事件是在页面的所有内容下载完毕后触发的。

在您的情况下,您有大约40mb的视频需要完成加载,然后Safari触发主体加载操作。要解决此问题,您可以使用另一种方式触发showdiv()函数,例如:

document.addEventListener('readystatechange', function() {
  if(document.readyState === 'interactive'){
  showdiv('Citizenship');
  }
});

注意:这在Safari中适合我,但我没有尝试过其他浏览器。

此外,您可能希望阻止自动下载视频以节省数据传输费用。