什么是最好的JavaScript代码来创build一个img元素
我想创build一个简单的JS代码,在后台创build一个图像元素,并不显示任何东西。 图像元素将调用跟踪URL(如Omniture),并且需要简单而健壮,并且在IE 6 = <only中工作。 这里是我有的代码:
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()
创build合适的图像,旧版本的KHTML不会使用new Image()
创build适当的DOM节点,所以如果您想完全向后兼容,喜欢:
// 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)
在body的开头插入它。
要做到这一点,但仍然在所有的浏览器加载图像,你可以插入一个绝对定位的页面<div>
作为身体的第一个孩子,并把任何跟踪/预加载图像,你不想成为在那里可见。
var img = new Image(1,1); // width, height values are optional params img.src = 'http://www.testtrackinglink.com';
jQuery的:
$('#container').append('<img src="/path/to/image.jpg" width="16" height="16" alt="Test Image" title="Test Image" />');
我发现这样做效果更好,因为您不必担心HTML转义任何东西(如果值没有被硬编码,那么应该在上面的代码中完成)。 (从JSangular度来看)也更容易阅读:
$('#container').append($('<img>', { src : "/path/to/image.jpg", width : 16, height : 16, alt : "Test Image", title : "Test Image" }));
var img = document.createElement('img'); img.src = 'my_image.jpg'; document.getElementById('container').appendChild(img);
只是为了完整性,我会build议使用InnerHTML的方式 – 即使我不称之为最好的方法…
document.getElementById("image-holder").innerHTML = "<img src='image.png' alt='The Image' />";
顺便说一句, innerHTML并不是那么糟糕
你允许使用框架吗? jQuery和Prototype使这种事情很容易。 这里有一个原型示例:
var elem = new Element('img', { 'class': 'foo', src: 'pic.jpg', alt: 'alternate text' }); $(document).insert(elem);
最短path:
(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; }
简单:)
正如其他人指出的,如果允许使用像jQuery这样的框架,最好的办法就是使用它,因为它很可能会以最好的方式来实现。 如果你不允许使用框架,那么我认为操纵DOM是最好的方法(在我看来,正确的方法)。
只要添加完整的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>