[英]jQuery, JavaScript, HTML: how to load images after everything else is loaded?
[英]Jquery - how to load everything except the images?
我目前正在研究WordPress附加功能,该功能可在要求时加载完整的帖子内容(通常显示摘录)。 我做了这样的代码:
$(".readMore").click(function() {
var url = $(this).attr("href");
$(this).parent("p").parent("div").children("div.text").slideUp("slow", function () {
$(this).load(url + " .text", function(){
$(this).slideDown("slow");
});
});
$(this).parent("p").fadeOut();
return false; });
而且有效。 但是我不希望图像被加载。 我尝试了.text:not(img),但没有成功。 我怎样才能做到这一点?
当然,该技巧是防止图像被用户的浏览器不必要地下载。 不显示它们很容易。
我只有两个浏览器,可以轻松便捷地判断下载的内容:Chrome和Firefox + Firebug。 在我的测试中 ,马丁使用*:not(img)
的解决方案导致图像在Chrome和Firefox + Firebug中都被下载(尽管未显示)。 (我之所以强调“ Firefox + Firebug”,是因为Firebug有时可以更改Firefox的行为,因此它很可能在这里更改了其行为,尽管我认为不是;以下更多内容。)
进行了一些调整,但这似乎可以解决问题(更多有关下面的测试):
$.ajax({
url: url,
success: function(data) {
var div = $("<div>").html(data);
if (stripImages) {
// Find the images, remove them, and explicitly
// clear the `src` property from each of them
div.find("img").remove().each(function() {
this.src = "";
});
}
$(targetSelector).append(div.children());
},
error: function(jxhr, status, err) {
display("ajax error, status = " + status + ", err = " + err);
}
});
实时示例 “包含大图像”复选框包括NASA的每日天文图片(APOD)中的大文件。
那里的关键是将img
元素的src
设置为""
。 在Chrome上,仅删除元素就足以防止Chrome开始下载图像,但在Firefox + Firebug上,它不仅开始下载图像,而且即使下载花费了相当长的时间,仍然继续。 清除src
会导致Firefox放弃下载(我可以在Firebug Net控制台中看到这一点)。
那IE呢? 还是没有Firebug的Firefox? 我只是对它们进行了不科学的测试,但它很有希望:如果我在IE或Firefox上运行我的马丁解决方案的实时示例,而没有在VM中使用Firebug,则我会看到VM的网络接口正在正常工作, 这表明它正在下载大的APOD图片。 相反,如果我在相同的环境(清除了缓存等)中在上面运行我的解决方案 ,则看不到VM网络接口正在执行该工作, 这表明下载要么没有开始,要么正在下载早早中止。
.text *:not(img)
将从.text中选择不是图像的每个后代,因此从理论上讲它应该起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.