MozillaZine.jp フォーラム https://forums.mozillazine.jp/ |
|
拡張機能で画像やスクリプトの読み込みを制限させたい https://forums.mozillazine.jp/viewtopic.php?f=26&t=8033 |
ページ 1 / 1 |
作成者: | apollo [ 2008年12月15日(月) 06:06 ] |
記事の件名: | 拡張機能で画像やスクリプトの読み込みを制限させたい |
XPCOMのnsIWebBrowserSetupを使って制御しようとしましたが エラー: SETUP_ALLOW_IMAGES is not defined と出てしまいます。記述の仕方がおかしいのでしょうか。 コード: var wbs = Components.classes['@mozilla.org/embedding/browser/nsWebBrowser;1']
.createInstance(Components.interfaces.nsIWebBrowserSetup); wbs.setProperty(SETUP_ALLOW_IMAGES, PR_FALSE); |
作成者: | apollo [ 2008年12月15日(月) 06:17 ] |
記事の件名: | Re: 拡張機能で画像やスクリプトの読み込みを制限させたい |
環境を書くのを忘れていました・・。 OSはWindowsXP ブラウザはFirefox 3.0.4です。 |
作成者: | あ [ 2008年12月16日(火) 00:01 ] |
記事の件名: | Re: 拡張機能で画像やスクリプトの読み込みを制限させたい |
apollo さんが書きました: コード: var wbs = Components.classes['@mozilla.org/embedding/browser/nsWebBrowser;1'] .createInstance(Components.interfaces.nsIWebBrowserSetup); 拡張機能で、新たなブラウザを作りたいのでしょうか? おそらく、やりたいことは違うのではないかと思いますが… apollo さんが書きました: コード: wbs.setProperty(SETUP_ALLOW_IMAGES, PR_FALSE); コード: const SETUP_ALLOW_IMAGES = Components.interfaces.nsIWebBrowserSetup.SETUP_ALLOW_IMAGES;
const PR_FALSE = 0; とでもしておけば良いと思います。 が、おそらく(以下同文) |
作成者: | apollo [ 2008年12月18日(木) 07:22 ] |
記事の件名: | Re: 拡張機能で画像やスクリプトの読み込みを制限させたい |
回答ありがとうございます。 画像やJavaScriptが読み込み時の大きな原因ではないかと思い、 一番はじめにすべての画像を読み込ませないようにして、 必要なものだけ個別で画像を取得するような拡張機能を作りたいと思い質問させていただきました。 いただいた助言の通り、以下のように記述すると上記のエラーはでなくなりましたが コード: const SETUP_ALLOW_IMAGES = Components.interfaces.nsIWebBrowserSetup.SETUP_ALLOW_IMAGES; const PR_FALSE = 0; 引用: エラー: uncaught exception: [Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIWebBrowserSetup.setProperty]" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: chrome://lobo/content/overlay.js :: <TOP_LEVEL> :: line 15" data: no] というエラーが帰ってきてしまいました。 ご指摘の様にアプローチが違うのかと思い、setPrefを用いて コード: var pref = Components.classes["@mozilla.org/preferencesservice;1"]
.getService(Components.interfaces.nsIPrefBranch); pref.setIntPref("permissions.default.image",2); としたところ、当面問題なく動作しましたのでご報告させていただきます。 |
作成者: | apollo [ 2009年1月07日(水) 10:04 ] |
記事の件名: | Re: 拡張機能で画像やスクリプトの読み込みを制限させたい |
前回はお世話になりました。 独学でXPCOMのリファレンスやMDCで勉強していたのですが、どうしても解決できなかったので 再度質問させてください。 今回も同じテーマで、画像の読み込みを遅延させ(正確にはリクエストを一時中断し遅らせる) ユーザの体感表示速度を向上させるような拡張機能(アドオン)を作りたいと思っています。 方針としては、nsIObserverServiceを用いてリクエスト作成時に リクエストのヘッダを調べ、Acceptにimageが含まれていたら画像を取得しようとしてると判断し nsIRequestのsuspendメソッドでそのリクエストを中断させたいと思っています。 以下がそのソースになります コード: var httpRequestObserver =
{ observe: function(aSubject, aTopic, aState) { try { if (aTopic == 'http-on-modify-request') { // リクエストが作成されたらここへ分岐 var httpChannel = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel); var httpRequest = httpChannel.QueryInterface(Components.interfaces.nsIRequest); if (httpChannel.getRequestHeader("Accept").match("image")) this.delay(httpRequest); } else if (aTopic == 'http-on-examine-response') { } } catch (err) { } }, delay: function(Request){ // Request.cancel(Components.results.NS_ERROR_ABORT); Request.suspend(); // リクエストを中断 setTimeout(Request.resume,10000); // リクエストを10秒後に再開 } }; /* オブサーバXPCOMを登録 */ var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); observerService.addObserver(httpRequestObserver, "http-on-modify-request", false); 参考にしたページをみると使用法に間違いはなさそうなのですが 実際はsuspend()しても、すぐ画像を取得してしまい効果がみられません。 一方で、cancel()をした場合は、思い通りにリクエストを中断し画像は表示されませんでした。 どうすればsuspendメソッドが思い通りに動くようになるのでしょうか? JavaScript、拡張機能開発ともに経験が浅く、所々変な記述もみられるかもしれませんが、アドバイスいただけたら幸いです。 参考にしたページ MDC:Setting HTTP request headers XUL Planet:nsIRequest |
ページ 1 / 1 | All times are UTC + 9 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |