我正在执行一个外部脚本,使用<脚本>内<头>。

现在,由于脚本在页面加载之前执行,我不能访问<body>等。我想在文档被“加载”(HTML完全下载并在ram中)后执行一些JavaScript。是否有任何事件,我可以挂钩到当我的脚本执行,这将在页面加载触发?


当前回答

只需定义<body onload=" function ()>,它将在页面加载后被调用。脚本中的代码被function(){}括起来。

其他回答

我可以通过这段代码捕获页面加载

<script>
console.log("logger saber");

window.onload = (event) => {
  console.log('page is fully loaded');
document.getElementById("tafahomNameId_78ec7c44-beab-40de-9326-095f474519f4_$LookupField").value = 1;;
};

</script>

这是一个基于延迟js加载的脚本,在页面加载后,

<script type="text/javascript">
  function downloadJSAtOnload() {
      var element = document.createElement("script");
      element.src = "deferredfunctions.js";
      document.body.appendChild(element);
  }

  if (window.addEventListener)
      window.addEventListener("load", downloadJSAtOnload, false);
  else if (window.attachEvent)
      window.attachEvent("onload", downloadJSAtOnload);
  else window.onload = downloadJSAtOnload;
</script>

我该把它放在哪里?

将代码粘贴到</body>标记之前(靠近HTML文件的底部)。

它能做什么?

此代码表示等待整个文档加载,然后加载 外部文件deferredfunctions.js。

这是上面代码的一个例子- JS的延迟渲染

我写这个基于延迟加载javascript页面速度谷歌的概念,也从这篇文章延迟加载javascript

<body onload="myFunction()">

这段代码运行良好。

但窗口。Onload方法有各种依赖关系。所以它可能不会一直有效。

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

.ready()最适合我。

$(document).ready(function(){ ... });

.load()将工作,但它不会等到页面加载。

jQuery(window).load(function () { ... });

对我不起作用,破坏了下一个内联脚本。我也使用jQuery 3.2.1以及一些其他的jQuery叉子。

隐藏我的网站加载覆盖,我使用以下:

<script>
$(window).on("load", function(){
$('.loading-page').delay(3000).fadeOut(250);
});
</script>

我发现有时在更复杂的页面上,并不是所有的元素都在时间窗口加载。Onload被触发。如果是这种情况,在函数延迟片刻之前添加setTimeout。它不是优雅的,但它是一个简单的hack渲染良好。

window.onload = function(){ doSomethingCool(); };

变得……

window.onload = function(){ setTimeout( function(){ doSomethingCool(); }, 1000); };