我见过一些预加载问题,但其中大多数来自拥有网站并希望为用户实现一些预加载的人。我想要做的是使用greasemonkey在一些网站上实现一些预加载以供我自己使用。
我经常光顾的一些网站有像书一样的“页面”。而且有很多页面(在大多数情况下,每页上都有 1 MB+ 的图像)所以我想制作一个greasemonkey 脚本来加载接下来的 1-2 页。下一页的 URL 是可预测的(它们按顺序编号,编号前有前缀)。
我该怎么做呢?有没有办法下载网页(包括所有图像)并让 Firefox 知道它已被缓存?
我见过一些预加载问题,但其中大多数来自拥有网站并希望为用户实现一些预加载的人。我想要做的是使用greasemonkey在一些网站上实现一些预加载以供我自己使用。
我经常光顾的一些网站有像书一样的“页面”。而且有很多页面(在大多数情况下,每页上都有 1 MB+ 的图像)所以我想制作一个greasemonkey 脚本来加载接下来的 1-2 页。下一页的 URL 是可预测的(它们按顺序编号,编号前有前缀)。
我该怎么做呢?有没有办法下载网页(包括所有图像)并让 Firefox 知道它已被缓存?
您可以在隐藏的 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 的网络面板中的几乎所有内容(包括图像)的状态为304 Not Modified
- 这意味着它已被缓存。
(新的、无缓存的加载返回状态200 OK
。)