我已经看到了一些预加载问题,但大多数是来自拥有网站的人,并希望为用户实现一些预加载。我想要做的是使用greasemonkey在一些网站上实现一些预加载以供我自己使用。
我经常会有一些网站像书一样有“页面”。并且有很多页面(在大多数情况下每页都有1 MB +图像)所以我想创建一个greasemonkey脚本来加载接下来的1-2页。下一页的URL是可预测的(它们在数字前用前缀顺序编号)。
我应该怎么做呢?有没有办法下载一个网页(包括所有图像),让Firefox知道它已被缓存?
答案 0 :(得分:3)
您可以在隐藏的iFrame中加载页面。然后将缓存它(基于服务器和Firefox设置)。
// ==UserScript==
// @name _Preload page(s)
// @namespace _pc
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
if (window.top != window.self) //-- Don't run on frames or iframes.
return;
var preloadPage = "http://cheezburger.com/6555102208";
/*--- Load page in hidden iFrame.
It will then be cached per FF and server settings.
*/
$("body").append (
'<iframe class="GM_hiddenIFrame" src="' + preloadPage + '"></iframe>'
);
GM_addStyle ( (<><![CDATA[
iframe.GM_hiddenIFrame {
display: none;
}
]]></>).toString () );
请注意,添加了window.top != window.self
位,否则脚本可能会触发隐藏的iframe,从而导致递归(可能是无限的)。
我通过以下方式验证了这一点:
在另一个标签页中加载cheezburger.com/6555102208 ...
Firebug的 Net 面板中的几乎所有内容(包括图像)都具有304 Not Modified
的状态 - 这意味着它已被缓存。
(一个新的,无缓存,加载返回状态200 OK
。)