如何使用Google Mobilizer动员浏览浏览页面中的所有链接?

时间:2013-10-06 21:23:57

标签: firefox mobile web greasemonkey

我正试图通过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实际上为你提供了一个上下文菜单项。

2 个答案:

答案 0 :(得分:1)

是的,Firefox附加组件可以执行此操作, Firefox Greasemonkey脚本也应该能够执行此操作。

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

  1. 将脚本设置为新<a><img>可能 <iframe>元素的run at document-start and use MutationObservers to watch for the creation

    < / LI>
  2. 当找到新的<a><iframe>等元素时,请重写其srchref属性以使用动员服务。

  3. 当找到新的<img>时,事情变得有点棘手。 我认为如果删除<img>节点,它会停止该图像的加载(如果它已经启动)。这需要进行测试,以及对图像服务器的影响。

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

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

    1. 复制<img>节点的outerHTML
    2. 请注意<img>节点与兄弟节点相关的父节点和节点位置。
    3. 删除<img>节点。
    4. 修改src部分以指向动员者服务。
    5. 创建一个新的<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链接是否属于父站点域,并且不会更改它们。