1

现代网页设计的一个反复出现的问题可以概括为“到处都是 sh**”。这样做有两个问题:第一,它占用内存并且加载时间更长,第二,它在视觉上使网页混乱。

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

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

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

4

2 回答 2

1

是的,不幸的是,我从未见过在 Chrome 呈现之前更改 html 的方法。
但就阻止该页面显示的内容而言,Id 建议仅使用 AdBlock https://chrome.google.com/webstore/detail/gighmmpiobklfepjocnamgkkbiglidom
AdBlock 可用于停止资源(js、图像、css、xmlhttprequest)曾经被下载(它使用 webRequest api 在后台阻止它们)并且还可以使用 css 隐藏元素......它相当有效(只需记住在其选项页面中选择高级选项,然后当您单击 AdBlock 按钮时,您会得到“显示资源列表”)。此外,安装 Flashblock 可以帮助...或禁用 Chrome 设置中的插件,这样做会使它们无法加载,但仍会显示在页面上,然后您可以让它们加载。

于 2012-04-10T10:01:39.040 回答
0

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

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

我正在尝试一种可靠的方法来做到这一点......我的一个建议是使用“sub_frame”过滤器,并观察它是否是一个喜欢/推文/社交按钮的网址

您还可以阻止已知的分析内容......而且名单还在继续!玩得开心!当你启动时,你有我可以订阅的电子邮件列表吗?如果没有,请给我一个评论!

(从评论中可以看出,innerHTML hack 是如何工作的)

//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();
于 2012-04-11T07:40:13.797 回答