我正试图通过Google Mobilizer使用这项优质服务“动员”我的某些网页上的链接。
EG:更改以下网址:
http://imgur.com/
为:
http://www.google.com/gwt/x?u=imgur.com
Google Mobilizer 可以大大减少传递给它的URL的大小。图像尺寸减小。只渲染动画GIF的第一帧,基本上任何资源的大小都会大大减少。这在低带宽和高延迟连接上大大减少了下载时间。
这可以通过附加组件或用户脚本在Firefox中完成吗?这样网页上的所有链接都以www.google.com/gwt/x?u=
为前缀?
有a Chrome extension实际上为你提供了一个上下文菜单项。
答案 0 :(得分:1)
是的,Firefox附加组件可以执行此操作, Firefox Greasemonkey脚本也应该能够执行此操作。
以下是使用仅限Firefox Greasemonkey脚本完成工作的概述:
将脚本设置为新<a>
,<img>
和可能 <iframe>
元素的run at document-start
and use MutationObserver
s to watch for the creation。
当找到新的<a>
,<iframe>
等元素时,请重写其src
或href
属性以使用动员服务。
当找到新的<img>
时,事情变得有点棘手。 我认为如果删除<img>
节点,它会停止该图像的加载(如果它已经启动)。这需要进行测试,以及对图像服务器的影响。
如果原始图像仍然加载,则放弃此方法并使用加载项。或者,您可以使用AdBlock Plus来阻止原始图像。
无论如何,这种情况下的步骤是:
<img>
节点的outerHTML
。<img>
节点与兄弟节点相关的父节点和节点位置。<img>
节点。src
部分以指向动员者服务。<img>
节点,旧节点是。答案 1 :(得分:-1)
这对我有用。它会替换页面上附加了Google Mobilizer URL的所有链接。
if (!(
// Except when on ...
(/google.com\/search/.test(document.URL))
|| (/google.*\/gwt/.test(document.URL))
)){
var link = document.body.getElementsByTagName("a");
for (var i = 0; i < link.length; i++) {
if (!(
//Only for external links
(link[i].hostname == window.location.hostname)
//And except for links that contain...
|| (/google\./.test(link[i].href))
|| (/stack/.test(link[i].href))
|| (/reddit\./.test(link[i].href))
//And except for Null & Javascript-purpose links...
|| (/\0/.test(link[i].href))
)){
//Mobilize all links (append mobilizer URL)
link[i].href = link[i].href.replace("http","http://google.com/gwt/x?u=http")
}
}
}
else if (/google.*\/gwt/.test(document.URL)){
// But when on Google Mobilizer site itself, ...
var link = document.body.getElementsByTagName("a")
for (var i = 0; i < link.length; i++) {
if ((/gwt\/x\/e\?/.test(link[i].href))) {
//De-mobilize (just) "View page directly" link (because it unnecessarily prompts for redirection)
var inner = link[i].href.indexOf('http',1);
inner = inner>-1 ? link[i].href.substr(inner,link[i].href.indexOf('&',inner)-inner) : false;
if (inner)
link[i].href = inner;
}
}
}
它还会检查if
链接是否属于父站点域,并且不会更改它们。