-1

我正在尝试使用Google Mobilizer提供的这项出色服务使我的某些页面上的链接“动员起来” 。

EG:更改 URL,例如:

http://imgur.com/ 

到:

http://www.google.com/gwt/x?u=imgur.com

Google Mobilizer大大减小了传递给它的任何 URL 的大小。图像尺寸变小。仅渲染动画 gif 的第一帧,基本上任何资源的大小都会大大减小。这大大减少了低带宽和高延迟连接的下载时间。

这可以通过附加组件或用户脚本在 Firefox 中完成吗?这样网页上的所有链接都以www.google.com/gwt/x?u=?

一个 Chrome 扩展程序实际上为您提供了一个上下文菜单项来执行此操作。

4

2 回答 2

1

是的,一个 Firefox 插件可以做到这一点,一个Firefox Greasemonkey 脚本也应该能够做到这一点。

以下是如何使用仅限 Firefox 的Greasemonkey 脚本完成的概述:

  1. 将脚本设置为在 at 运行document-start并使用MutationObservers 来监视<a><img>、 和可能 <iframe>的元素的创建。

  2. 当找到新<a>的 ,<iframe>等元素时,重写其srcorhref属性以使用 mobilizer 服务。

  3. 当一个新<img>的被发现的事情变得有点棘手。 我认为如果您删除<img>节点,它会停止加载该图像(如果它已经开始)。这需要测试,以及对图像服务器的影响。

    如果仍然加载原始图像,则放弃此方法并使用附加组件。或者,您可以使用 AdBlock Plus 来阻止原始图像。

    无论如何,这种情况下的步骤是:

    1. 复制<img>节点的outerHTML.
    2. 注意<img>节点的父节点和节点相对于兄弟节点的位置。
    3. 删除<img>节点。
    4. 修改src部件以指向动员服务。
    5. 在旧节点所在的位置创建一个新<img>节点。
于 2013-10-06T22:53:56.130 回答
-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链接是否属于父站点域,并且不会更改它们。

于 2013-10-12T03:57:13.747 回答