Chrome扩展程序 - 请勿加载网页的某些部分

时间:2012-04-10 00:47:49

标签: google-chrome google-chrome-extension

现代网页设计的一个反复出现的问题可以归结为“遍布整个地方太多了”。这有两个问题:一个是占用内存,加载时间较长,另外两个,它在视觉上使网页混乱。

如果我只是想解决第二个问题,我就不需要帮助。 JavaScript可以删除DOM节点,CSS可以隐藏它们,因此已经有一些可见的方法可以简单地隐藏网页的各个部分。我想要做的是解决第一个问题 - 通过不加载某些元素来加快网页加载。

我很确定无法有选择地下载HTML文件的某些部分。但是一旦下载了源代码,浏览器就不必实际解析并显示所有内容,是吗?

当然,如果在它已经被解析和显示之后完成,那将毫无意义。因此,在开始解析HTML 之前,我需要一种方法告诉Chrome该做什么。这是可能的,你认为它会显着减少加载时间/内存使用吗?

2 个答案:

答案 0 :(得分:1)

是的,遗憾的是,在Chrome呈现之前,我从未见过改变html的方法 但就阻止该页面显示的内容而言,Id推荐使用AdBlock https://chrome.google.com/webstore/detail/gighmmpiobklfepjocnamgkkbiglidom AdBlock可用于阻止资源(js,images,css,xmlhttprequest)从下载(它使用webRequest api在后台阻止它们),也可以使用css隐藏元素......它相当有效(只需记住选择)选项页面中的高级选项,然后当您单击AdBlock按钮时,您会看到“显示资源列表”。另外安装Flashblock可以帮助...或者在Chromes设置中禁用插件,这样做会使它们无法加载,但仍会显示在页面上,然后你可以加载它们。

答案 1 :(得分:0)

完全可能!认识最新的Chrome API:webRequest,在当前版本的Chrome-17中最终确定。

webRequest的文档:http://code.google.com/chrome/extensions/webRequest.html#event-onBeforeRequest

我正在尝试一种可靠的方法来做到这一点......我的一个建议是使用'sub_frame'过滤器,并观察它是否像/ tweet / social button url

您还可以阻止已知的分析内容......然后列表就会继续!玩得开心!你有一个我可以在你发布时分到的电子邮件列表吗?如果没有,请找一个并给我发表评论!

(根据评论,这里是innerHTML黑客的工作方式)

//This modLoop constantly peers into and modifies the innerHTML in attempt to modify the html before it's fully processed.
var modLoop = function modLoop(){
  var html = document.documentElement.innerHTML
  //modify the page html before it's processed!
  //like: html = html.replace('//google'sCDN.com/jquery/1.7.1/', chrome.extension.getURL('localjQuery.1.7.1.js'));
  //I just pulled that ^ out of nowhere, you'll want to put careful thought into it.
  //Then, mod the innerHTML:
  document.documentElement.innerHTML = html;
  setTimeout(modLoop, 1);
};
var starter = function starter(){
  if (document.documentElement.innerHTML && document.documentElement.innerHTML.lengh > 0) {
    modLoop();
  } else {
    setTimeout(starter, 1);
  }
};
starter();