Вызвать функцию JavaScript после завершения загрузки страницы? - PullRequest
0 голосов
/ 30 октября 2019

Я использую CookieBot на наших html-страницах. CookieBot javascript не загружается в тестовой среде и выдает ошибку net::ERR_ABORTED 404.

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

Iпробовал следующие варианты, чтобы вызвать слушателя после завершения загрузки страницы. Но ни одна из них не работает:

document.addEventListener("load", (e) => {
    console.log("document load");
});

document.addEventListener("DOMContentLoaded", function(event) {
    console.log("DOMContentLoaded");
});

$(document).ready(function() {
    console.log("ready!");
});

$(document).ready(function() {
    console.log("document is ready");
});

$(window).on("load", function(){
    console.log("window load!");
});

window.onload = function () {
    console.log("window onload!");
};

Полагаю, скрипт CookieBot переопределяет моих слушателей. Вот пример, где слушатель не вызывается. Когда вы удаляете скрипт CookieBot, он запускается: https://jsfiddle.net/hkarakose/4by26Lr3/1/

Как я могу вызвать функцию после завершения загрузки страницы?

Ответы [ 3 ]

0 голосов
/ 30 октября 2019

Вы можете вызвать функцию после загрузки страницы с помощью:

window.onload = function() {
 //here you can write your function and invoke it.
}

Редактировать:

Возможно, я не понял ваш запрос, но сейчас я читаю более внимательно.

Проблема в сценарии, верно? Если вы вставите скрипт в HEAD, он будет загружен первым.

Вы можете вставить тип скрипта следующим образом: type = "text / plain" с атрибутом data: data-attribute = "script-cookie ".

Затем измените тип, как только все будет загружено, например:

window.onload = function () {
       var allPrefScript = document.querySelectorAll ("script [data-attribute =" script-cookie "]");
allPrefScript [0] .setAttribute ("type", "text / javascript");
}
0 голосов
/ 30 октября 2019

Хотя ответ @ davilink92 работает, я решил эту проблему более практичным способом.

Я прикрепил внешнюю загрузку скрипта к событию загрузки окна:

window.addEventListener('load', function () {
    $.getScript("https://consent.cookiebot.com/uc.js?cbid=d180eb7a-8f13-4549-bacc-6d4a6dfb5da8&culture=en");
    $("#global-loader").fadeOut("slow");
});

Таким образом, скрипт не смог предотвратить прослушивание события загрузки окна браузером. И, таким образом, я смог удалить загрузочный счетчик после загрузки страницы.

0 голосов
/ 30 октября 2019

У меня есть привычка использовать document.addEventListener("load", (e) => {console.log("loaded"); })

Можете ли вы показать нам больше кода, чтобы увидеть, если ваша проблема здесь? Я думаю, что все ваши тесты верны, и я не понимаю, почему он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...