4

リソースが見つからなかったためにロードされなかったすべての要素を見つける方法は?

    <body>
       <img src="notThere.png">
       <script src="notInHere.png"></script>
       <img src="DoesExist.png">

       // want to find the first and the script with unexisting sources, but not the second image with an existing source.

    </body>

誰かがそれらの要素を見つける方法のヒントを教えてもらえますか? onerror要素が動的にロードされる可能性があるため、各要素の設定は解決策ではないと思います..

残念ながら、window.onerror「リソースが見つかりません」エラーでは起動されません。

例:

    <body>
        <script src="someonesScript.js"></script> <!-- this script might load images/audio etc.. -->
        <script>
           // now put here whatever you like
           // but find out which resources (images,scripts,..) were tried to load (from the script above)
           // and can't be loaded


        </script>
    </body>

この例が私の質問を理解するのに役立つことを願っています。

4

3 に答える 3

1

JavaScript メソッドonerrorを使用して、次のことを確認できます。

<img src="false.jpg" onerror="alert('Failed to load');" />

ただし、画像を動的にロードする場合は、 file_exists()などの関数を使用できます。

于 2013-08-09T21:26:37.803 に答える
0
function ImageExist(url) 
{
   var img = new Image();
   img.src = url;
   return img.height != 0;
}

ユーザー cichy からこれを見つけました: jQuery または JavaScript にファイルが存在するかどうかを確認するにはどうすればよいですか?

この関数でこれを行うだけです。存在しない場合 (オンロード)、画像名を配列に追加します。そこに、すべての情報があります

編集:

ページ上のすべての画像を見つけたい場合は、PHP Simple HTML DOM Parser を試してください。最初にここからダウンロードする必要があります 。例 ( How do you parse and process HTML/XML in PHP?に関する NAVEED の投稿の助けを借りて作成):

<?php
$html = file_get_html('filename.php');

$image_names = array(); //store all image_names in here 
foreach($html->find('img') as $element){
$image_names[] = $element->src;
}
function check_images($array){
foreach($array as $img){
    if(@getimagesize($img)) echo "true"; else echo "false: ".$img;
}

}
check_images($image_names);

私にとって完璧に機能した場合!

于 2013-08-09T21:24:18.117 に答える