Safari 12.1 выгрузить не стреляя javascript - PullRequest
1 голос
/ 26 мая 2019

У меня есть 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 Ответ

1 голос
/ 27 мая 2019

В Safari кажется, что событие body onload запускается после загрузки всего содержимого страницы.

В вашем случае у вас есть около 40 МБ видео, которые необходимо завершить загрузкой, прежде чем Safari запустит действие загрузки тела. Чтобы это исправить, вы можете вызвать функцию showdiv () другим способом, например:

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

Примечание: это работает для меня в Safari, но я не пробовал другие браузеры.

Кроме того, вы можете запретить автоматическую загрузку видео, чтобы сэкономить на стоимости передачи данных.

...