1

現代のウェブデザインで繰り返し発生する問題は、「あちこちでsh**が多すぎる」と要約することができます。これには2つの問題があります。1つはメモリを消費してロードに時間がかかること、もう1つはWebページを視覚的に乱雑にすることです。

2番目の問題を解決したいだけなら、助けは必要ありません。JavaScriptはDOMノードを削除でき、CSSはそれらを非表示にすることができるため、Webページの一部を単純に非表示にするいくつかの目に見える方法がすでにあります。私がやりたいのは、最初の問題を解決することです。特定の要素をロードしないことで、Webページのロードを高速化します。

HTMLファイルの特定の部分を選択的にダウンロードすることは不可能だと確信しています。しかし、ソースがダウンロードされると、ブラウザは実際にすべてを解析して表示する必要はありませんね。

もちろん、これがすでに解析されて表示された後に行われる場合、それは無意味になります。そのため、HTMLの解析を開始する前にChromeに何をすべきかを指示する方法が必要です。これは可能ですか?ロード時間/メモリ使用量を大幅に削減できると思いますか?

4

2 に答える 2

1

ええ、残念ながら、Chrome がレンダリングする前に html を変更する方法を見たことがありません。
しかし、そのページが表示されるものをブロックする限り、 AdBlock を使用することをお勧めします https://chrome.google.com/webstore/detail/gighmmpiobklfepjocnamgkkbiglidom
ダウンロードされることはありません (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

私はこれを行うための確実な方法を考えようとしています...私が持っている1つの提案は、「sub_frame」フィルターを使用し、それがいいね/ツイート/ソーシャルボタンのURLであるかどうかを確認することです

既知の分析をブロックすることもできます...そしてリストは続きます! 楽しむ!ローンチ時にサブスクライブできるメーリングリストはありますか? そうでない場合は、1 つ入手して、コメントを残してください。

(コメントから、これが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();
于 2012-04-11T07:40:13.797 に答える