我有一个Android应用程序,可以在Webkit视图中生成一些本地呈现的HTML。
除了以下内容之外,HTML生成的细节并不重要:
该应用程序可能至少在某些时候处于脱机状态,因此我希望处理无法加载图像的情况。
有问题的图像主要是1x1跟踪图像,但可能包含可见的图像。
如果不调用JQuery或外部库,您会建议我的攻击计划是什么?
我有关于如何做到这一点的想法,但意识到他们有许多陷阱需要担心:
display:none;
。alt
属性设置为空字符串。这需要在document.onLoad
?如果有帮助,对于这个问题,我似乎有以下子问题。目前尚不清楚其中任何一种的最佳策略:
任何想法,代码,建议都会感激不尽。
答案 0 :(得分:27)
- 如何确定图像的加载程度或网络状态。
- 如何隐藏/屏蔽未能加载的图像,使用户无法检测到图像丢失
您可以查看图像无法加载时触发的onerror事件:
<img src="image.png" alt="image" onerror="this.parentNode.removeChild(this)" />
- 何时执行这些任务(例如,当文档/窗口加载完毕?)
- 如何应用它们。
当我在文档的最后添加它(在&lt; / body&gt;之前)时,这在Firefox和Chrome中对我有用:
var imgs = document.getElementsByTagName('img')
for(var i=0,j=imgs.length;i<j;i++){
imgs[i].onerror = function(e){
this.parentNode.removeChild(this);
}
}
如果文档开头的图像没有加载,并且在文档准备就绪时附加了事件处理程序,某些浏览器可能无法触发该处理程序,那么您应该在目标平台上测试它,这是非常可行的。
答案 1 :(得分:1)
如何确定的负载 图像或状态 网络
一种方法可能是维护对DOM中所有图像的引用,并绑定在图像加载完成时触发的onload
事件。在指定的时间之后,任何未触发的图像都可能被认为是有问题的。
如何隐藏/屏蔽失败加载 图像,使其无法检测到 用户表示图像丢失。
你已经提到了一些选择。您是否考虑过从DOM中删除该元素?客户将不再无法加载图片。
何时执行这些任务(例如何时 文档/窗口已完成 加载?)
您无法使用document
或window
onload
事件,因为在DOM上的所有内容都加载后才会触发。检查DOM的准备情况因浏览器而异(幸运的是,你只需处理一个!)。 This might get you started
答案 2 :(得分:1)
有趣的问题。
在Firefox中查看,如果图像没有加载,它的naturalHeight(和宽度也是)你可以在android中使用一些javascript来读取类似的属性。我在Firebug中的测试脚本只是:
document.getElementsByTagName('img')[0].naturalHeight
答案 3 :(得分:0)
如果您的图像不是要使用的内容而不是文本或补充文本,那么它们应该是CSS背景图像。背景图像是完全被动的,如果无法检索或处理,则根本不显示。