javascript - 以编程方式创建图像时,Chrome 版本 32 (Mac) 停止从 src 加载图像

标签 javascript image google-chrome dom

谁能解释一下这是怎么回事?以下网页显示了在 Safari 和 Chrome(早于版本 32,周二发布)中加载时的 jpg 的三个副本。在新版 Chrome 上,它仅显示前两张图像;第三个永远不会被加载,回调也永远不会触发。

(编辑:虽然这里的问题很简单,但说这是一个简单的拼写错误不太公平。许多浏览器支持“img”作为“image”标签的允许同义词,Chrome 撤回了支持这样的页面以前可以正常工作的系统突然失败了,而且没有提供有用的错误报告。其他人可能会发现这些知识很有用。)

示例 HTML

<!DOCTYPE html>
<html>
<head><title>My Title></title></head>
<body>
<script>
document.addEventListener('DOMContentLoaded', initialize);

function initialize() {
    var imageURL = document.getElementById("img1").src;
    console.log(imageURL);

    var img2 = document.getElementById("img2");
    img2.onload = function(){console.log("loaded image 2");};
    img2.src = imageURL;

    var img3 = document.createElement("image");
    var container = document.getElementById("container");
    container.appendChild(img3);
    img3.onload = function(){
        // never fires in Chrome version 32
        console.log("loaded image 3");};
    img3.src = imageURL;
}
</script>
Image loaded from absolute URL<br>
<img id="img1" src="http://www.rakkup.com/wp-content/uploads/2012/03/rakkup-logo-for-website.png"></img>
<br>
Image created in HTML and src is set programmatically<br>
<img id="img2"><img>
<br>
<div id="container">
Image created in JavaScript and src is set programmatically<br>
Loads in Safari and Chrome before version 32, but not in Chrome 32<br>
</div>
</body>

最佳答案

您需要将 document.createElement("image") 更改为 document.createElement("img")
某些浏览器(例如 safari)允许将 image 作为 img 的同义词。
但由于它是非官方的,它不会在任何地方都有效。

关于javascript - 以编程方式创建图像时,Chrome 版本 32 (Mac) 停止从 src 加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21222677/

相关文章:

javascript - Jquery 中的预加载器

c# - 我想在 session ID licitys 中存储列表项,但不能这样做可以有任何建议

javascript - 如何仅更改特定图像一次

javascript - 如何等待用javascript加载的图像?

ms-access - 将 MS Access "OLE Objects"转换回纯 JPEG - 最好的方法?

android - WebView + Blob URL + 下载图片

c++ - 如何用Qt显示图像

javascript - 在 Chrome DevTools 中禁用源映射

javascript - 在 Chrome 中使用 javascript 启动 doc 文件

C# selenium 对远程 Web 驱动程序服务器的 URL 的 HTTP 请求在 60 秒后超时