[解決済み] img 要素を作成するための最適な JavaScript コードは?
2022-09-23 14:25:48
質問
私は、バックグラウンドで画像要素を作成し、何も表示しない簡単な JS コードを作成したいと思います。 イメージ要素はトラッキング URL (Omniture など) を呼び出し、シンプルで堅牢である必要があり、IE 6 =< のみで動作します。 以下は、私が持っているコードです。
var oImg = document.createElement("img");
oImg.setAttribute('src', 'http://www.testtrackinglink.com');
oImg.setAttribute('alt', 'na');
oImg.setAttribute('height', '1px');
oImg.setAttribute('width', '1px');
document.body.appendChild(oImg);
これが一番シンプルだけど、一番堅牢な(エラーのない)方法なんでしょうか?
jQueryのようなフレームワークは使えません。 プレーンなJavaScriptである必要があります。
どのように解決するのですか?
oImg.setAttribute('width', '1px');
px
はCSSのみです。どちらかを使用してください。
oImg.width = '1';
を使って、HTMLで幅を設定するか
oImg.style.width = '1px';
でCSSで設定します。
IE の古いバージョンでは
document.createElement()
で適切な DOM ノードが作成されないことに注意してください。
new Image()
のようなものを使います。
// IEWIN boolean previously sniffed through eg. conditional comments
function img_create(src, alt, title) {
var img = IEWIN ? new Image() : document.createElement('img');
img.src = src;
if ( alt != null ) img.alt = alt;
if ( title != null ) img.title = title;
return img;
}
また、少し注意が必要なのは
document.body.appendChild
を使用した場合、ページの読み込み中にスクリプトが実行される可能性があります。予期せぬ場所に画像が表示されたり、IEで変なJavaScriptエラーが発生したりする可能性があります。もし、ロード時に追加できるようにする必要があるのなら(ただし
<body>
要素が開始された後) に追加する必要がある場合は、本文の最初に
body.insertBefore(body.firstChild)
.
これを目に見えないように、しかしすべてのブラウザで実際に画像を読み込むようにするには、ページの外側に絶対的な位置の
<div>
を挿入し、表示させたくない追跡/プリロード画像をそこに置くことができます。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?