バックグラウンドで画像要素を作成し、何も表示しないJSコードを少し作成します。画像要素は、Omnitureなどの追跡URLを呼び出し、シンプルで堅牢である必要があり、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()
で適切なイメージを作成せず、KHTMLの古いバージョンはnew Image()
で適切なDOM Nodeを作成しないことに注意してください。完全に後方互換性がある場合は、次のようなものを使用します。
// 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>
を本文の最初の子として挿入し、不要な追跡/プリロード画像を配置しますそこに見えるように。
var img = new Image(1,1); // width, height values are optional params
img.src = 'http://www.testtrackinglink.com';
var img = document.createElement('img');
img.src = 'my_image.jpg';
document.getElementById('container').appendChild(img);
jQuery:
$('#container').append('<img src="/path/to/image.jpg"
width="16" height="16" alt="Test Image" title="Test Image" />');
HTMLが何かをエスケープすることを心配する必要がないので、これがさらにうまくいくことがわかりました(値がハードコーディングされていない場合、上記のコードで行う必要があります)。また、読みやすい(JSの観点から):
$('#container').append($('<img>', {
src : "/path/to/image.jpg",
width : 16,
height : 16,
alt : "Test Image",
title : "Test Image"
}));
完全を期すために、InnerHTMLの方法を使用することをお勧めします-最良の方法とは言いませんが...
document.getElementById("image-holder").innerHTML = "<img src='image.png' alt='The Image' />";
ちなみに、 innerHTMLはそれほど悪くない
最短の方法:
(new Image()).src = "http:/track.me/image.gif";
あなたは単にすることができます:
var newImage = new Image();
newImage.src = "someImg.jpg";
if(document.images)
{
document.images.yourImageElementName.src = newImage.src;
}
シンプル:)
完全なhtml JSの例を追加するだけです
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>create image demo</title>
<script>
function createImage() {
var x = document.createElement("IMG");
x.setAttribute("src", "http://www.iseebug.com/wp-content/uploads/2016/09/c2.png");
x.setAttribute("height", "200");
x.setAttribute("width", "400");
x.setAttribute("alt", "suppp");
document.getElementById("res").appendChild(x);
}
</script>
</head>
<body>
<button onclick="createImage()">ok</button>
<div id="res"></div>
</body>
</html>
これは、私が望むようにimgタグのループまたは単一タグを作成するために従う方法です
method1 :
let pics=document.getElementById("pics-thumbs");
let divholder=document.createDocumentFragment();
for(let i=1;i<73;i++)
{
let img=document.createElement("img");
img.class="img-responsive";
img.src=`images/fun${i}.jpg`;
divholder.appendChild(img);
}
pics.appendChild(divholder);
または
method2:
let pics = document.getElementById("pics-thumbs"),
imgArr = [];
for (let i = 1; i < 73; i++) {
imgArr.Push(`<img class="img-responsive" src="images/fun${i}.jpg">`);
}
pics.innerHTML = imgArr.join('<br>')
<div id="pics-thumbs"></div>
JQueryのようなフレームワークの使用が許可されている場合、他の人が指摘したように、最善の方法はそれを使用することです。フレームワークの使用が許可されていない場合は、DOMを操作するのが最善の方法だと思います(そして、私の意見では、正しい方法です)。