2017-01-15 1 views
1

は私のHTMLページの現在のコードです:イメージをJavascriptでロードしますか?ここ

<!doctype html> 

<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>Example</title> 
<meta name="robots" content="noindex, nofollow"> 
<meta http-equiv="refresh" content="3;URL='http://google.com'" /> 
</head> 

<body> 

<script> 
var image = document.images[0]; 
var downloadingImage = new Image(); 
downloadingImage.onload = function(){ 
    image.src = this.src; 
}; 
downloadingImage.src = "http://example.com/pixel"; 
</script> 

<script> 
window.location = "http://google.com"; 
</script> 

</body> 

</html> 

コードのこの部分は、画像をロードするためにJavascriptを使用してする必要があります。

var image = document.images[0]; 
var downloadingImage = new Image(); 
downloadingImage.onload = function(){ 
    image.src = this.src; 
}; 
downloadingImage.src = "http://example.com/pixel"; 

これは検証するために行われているユーザーには、JavaScriptを持っています有効かどうか。特定の広告主様にユーザーを誘導し、特定の広告主様にはJavaScriptを有効にする必要があります。ロードされているピクセルは、カールのようなものを使用して数百万のボットヒットを送信しようとするサードパーティのベンダーからの不正なトラフィックを追跡できるようになっています。

JavaScriptが有効になっているユーザーの数が、予想していたよりも多少少なくなっています。私はその額を議論しようとしていません。しかし、誰もがこのコードに間違ったことを見ますか?

javascriptが順番に読み込まれるので、ユーザーがリダイレクトされる前に画像がブラウザに読み込まれるようにしてください。そして、私はそれが特定のブラウザで読み込まれない原因になると思いますコードで何か間違って表示されますか?

+0

あなたが離れてそれらを指示する理由あなたのサイトからは、無効にされたjavascriptだけに基づいていますか?彼らのセキュリティ上の懸念に対応し、JSを必要としないバージョンを提供する方がよいでしょうか?これはほとんどの人がそれを無効にする理由の後にあります。 – Chris

+1

セキュリティの確保には関係がないためです。特定の広告主様にユーザーを誘導し、特定の広告主様にはJavaScriptを有効にする必要があります。ロードされているピクセルは、カールのようなものを使用して数百万のボットヒットを送信しようとするサードパーティのベンダーからの不正なトラフィックを追跡できるようになっています。 – Andrew

+0

javascriptが順番に読み込まれるので、ユーザーはリダイレクトされる前にイメージがブラウザに読み込まれるはずです。 - このように、画像を読み込む要求が最初に開始されると思いますが、これはバックグラウンドで発生します。ブラウザによっては、画像リクエストが完了する前にリダイレクトが実行される可能性があります。 – Tommos

答えて

0

スクリプトは順番に実行されますが、イメージのロードは非ブロックです。その結果、image.srcを何かに設定しても、移動する前に画像が読み込まれるのを待つことはありません。いつリダイレクトするかを決定し、そのコードを画像のonload機能内に配置する必要があります。これを試してみてください:

  1. (HTML5のためにのみ有効)<noscript></noscript>であなたのリフレッシュタグをラップ

  2. これにコードを変更します。

    <html lang="en"> 
        <head> 
         <meta charset="utf-8"> 
         <title>Example</title> 
         <meta name="robots" content="noindex, nofollow"> 
         <noscript> 
          <meta http-equiv="refresh" content="3;URL='http://google.com'" /> 
         </noscript> 
        </head> 
        <body> 
         <img src="//example.org/pixel1"> 
         <script> 
          var image = document.images[0]; 
          var downloadingImage = new Image(); 
          downloadingImage.onload = function(){ 
           console.log('downloadImage loaded'); 
           image.onload = function(){ 
            console.log('image loaded'); 
            window.location = "http://google.com"; 
           } 
           image.src = this.src; 
          }; 
          downloadingImage.src = "//example.com/pixel2"; 
         </script> 
        </body> 
    </html> 
    
関連する問題