有没有一种方法,javascript脚本或任何东西可以允许在页面中预加载超链接?例如,我希望当用户来到http://ahostel.lt/并且页面完全加载时,脚本将开始预加载导航中的其他页面(预订、地图、设施、环顾等)。因此,当用户点击任何一个超链接时,页面都会立即加载。如何做到这一点?
发布于 2010-07-20 06:43:18
虽然目前只有火狐支持,但在HTML5规范中确实有这样的规定。
<link rel="next" href="page2.html">我只是把它作为非javascript的替代品抛给你。
发布于 2010-07-20 06:04:00
你可以这样做:
$(function() {
$('a').each(function() {
new Image().src = $(this).attr('href'); // or just this.href
});
});它们不是图像,但浏览器不知道这一点。您可能希望稍微放慢速度,以免过多地阻塞连接:
$(function() {
var urls = $('a').map(function(_, a) { return a.href; }).get(0);
var i = 0;
function fetchOne() {
if (i === urls.length) return;
var img = new Image();
img.load = fetchOne;
img.src = urls[i++];
};
fetchOne();
});edit - @Adam对fetch的“危险”链接提出了一个非常好的观点。将一些链接标记为"noPrefetch“(作为类或其他东西)可能会更好,或者只预取标记有”预取“类的链接。
发布于 2010-07-20 06:08:42
我没有尝试过,但基于this blog post,您可以执行以下操作:
$("a").each(function(){
$.ajax({ url:$(this).attr("href"), cache:true, dataType:"text" });
});但是,如果你有像注销这样的链接,你应该小心,用户可能会被注销。See Wikipedia for more problems with prefetching。
https://stackoverflow.com/questions/3285434
复制相似问题