Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 除特定图像外,是否已加载正文?_Javascript_Html_Onload - Fatal编程技术网

Javascript 除特定图像外,是否已加载正文?

Javascript 除特定图像外,是否已加载正文?,javascript,html,onload,Javascript,Html,Onload,我有一个包含大量文本和图像的HTML页面。一个特定的图像加载速度较慢。我想在加载页面的所有其他部分时做些什么,除了特定的图像。比如: <!DOCTYPE html> <html> <head></head> <body onloadExceptSlowImage="doSomething();"> ... several things, including some quick images ...

我有一个包含大量文本和图像的HTML页面。一个特定的图像加载速度较慢。我想在加载页面的所有其他部分时做些什么,除了特定的图像。比如:

<!DOCTYPE html>
<html>
  <head></head>
  <body onloadExceptSlowImage="doSomething();">
    ... several things, including some quick images ...
    <img id="SlowImage" src="slowImage.jpg" />
    ... several things, including some quick images ...
  </body>
</html>

... 一些东西,包括一些快速图像。。。
... 一些东西,包括一些快速图像。。。

这可能吗?怎么做?

你可以这样做

let loadedImagesEvent = new Event("loadExceptSlowImage")
let loadedImages = []
let lengthOfAllImages = document.querySelectorAll("img").length
let imagesExceptSlowImage = document.querySelectorAll("img:not(#SlowImage)")

imagesExceptSlowImage.forEach((img) => {
   img.onload = () => {
      loadedImages.push(img)
      if (loadedImages.length == lengthOfAllImages - 1) {
         window.dispatchEvent(loadedImagesEvent)
      }
   }
})

window.addEventListener("loadExceptSlowImage", () => {
   // Your Code
})

经过思考,我想出了一个简单的解决办法:

<!DOCTYPE html>
<html>
  <head>
    <script>
      function doSomething() {
        // Do whatever
        document.getElementById("SlowImage").src="slowImage.jpg";
      }
    </script>
  </head>
  <body onload="doSomething();">
    ... several things, including some quick images ...
    <img id="SlowImage" src="tempImage.jpg" />
    ... several things, including some quick images ...
  </body>
</html>

函数doSomething(){
//做任何事
document.getElementById(“SlowImage”).src=“SlowImage.jpg”;
}
... 一些东西,包括一些快速图像。。。
... 一些东西,包括一些快速图像。。。

我认为您必须将onloadExceptSlowImage更改为onload,然后从img标记中删除src属性。是的,已经编辑过(这是一个打字错误-我只是从原始帖子中复制)。为什么我要从img标记中删除src属性?当您删除src属性时,第一次加载img元素时,没有任何图像。所以你可以在加载页面后做一些事情,最后设置src属性来加载图像。@FreeBud是的。但是因为图像是在文本之后加载的,所以应该可以正常工作