获取未加载的元素
Get elements that did not load
如何找出由于找不到资源而未加载的所有元素?
<body>
<img src="notThere.png">
<script src="notInHere.png"></script>
<img src="DoesExist.png">
// want to find the first and the script with unexisting sources, but not the second image with an existing source.
</body>
有人能给我一个如何找出这些元素的提示吗?我认为,为每个元素设置onerror
不是解决方案,因为元素可能是动态加载的。。
不幸的是,window.onerror
没有在"找不到资源"错误中激发。
示例:
<body>
<script src="someonesScript.js"></script> <!-- this script might load images/audio etc.. -->
<script>
// now put here whatever you like
// but find out which resources (images,scripts,..) were tried to load (from the script above)
// and can't be loaded
</script>
</body>
希望这个例子能帮助理解我的问题。
虽然理论上error
事件和冒泡(error
事件应该冒泡)是可能的,但遗憾的是,浏览器对它的支持很弱(至少可以说)
充其量,您可以在特定时刻循环遍历DOM,查找所有src
属性,并检查它们是否指向有效的资源(通过其他人建议的方法)。但这不会抓住任何被移除的东西。
来源:
http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-事件分组事件
http://www.quirksmode.org/dom/events/error.html
您可以使用JavaScript方法onerror
来检查:
<img src="false.jpg" onerror="alert('Failed to load');" />
但是,如果动态加载图像,则可以使用file_exists()等函数。
function ImageExist(url)
{
var img = new Image();
img.src = url;
return img.height != 0;
}
我从用户cichy上找到了这个:如何检查文件是否存在于jQuery或JavaScript中?
使用此函数,只需执行以下操作:如果不存在(onload),则将图像名称添加到数组中。在那里,你将拥有的所有信息
编辑:
若您想在页面上找到所有图像,请尝试PHP Simple HTML DOM Parser。你必须先在这里下载。一个例子(在NAVEED关于如何在PHP中解析和处理HTML/XML的帖子的帮助下创建的):
<?php
$html = file_get_html('filename.php');
$image_names = array(); //store all image_names in here
foreach($html->find('img') as $element){
$image_names[] = $element->src;
}
function check_images($array){
foreach($array as $img){
if(@getimagesize($img)) echo "true"; else echo "false: ".$img;
}
}
check_images($image_names);
如果对我来说效果很好!
相关文章:
- Material Design Lite所有元素加载JS回调
- Chrome扩展:等待元素加载(async js)
- 从外部页面上的元素加载属性
- 聚合物元素加载非常缓慢
- 如何禁用 HTML 锚元素加载
- 尝试将一个元素加载到另一个元素时出现意外字符串
- 用kinetijs中的所有元素加载舞台
- 在特定元素加载时调用函数
- 如何在HTML元素加载到页面之前隐藏它们
- 是否可以延迟用户访问的第一个页面上的元素加载
- Facebook喜欢按钮不显示隐藏元素加载后
- 使用SELECT元素加载图像
- 如何使Javascript只在所有元素加载后才加载
- 在另一个元素加载后隐藏一个元素?AJAX
- 谷歌翻译元素-加载后页面准备好了
- 继续尝试函数,直到所需的DOM元素加载
- 在元素加载时调用javascript函数
- 如何检测或注册自定义元素加载并准备与之交互的回调
- HTML元素加载,即使他们没有附加到DOM?那么主干视图呢?
- 等待所有元素加载完成后执行操作