2011-07-07 15 views
1

問題:キュウリテストの実行中にfirefoxを再起動しなくてもjavascriptサポートを切り替えたり(別のドライバに頼っていない)Firefoxを再起動せずにプログラムによるJavaScriptサポートの切り替え

Firefoxのprefutilsがウェブページのjavascriptに公開されていると、それが可能になります。しかし、そうではありません。

それで、プラグインがありますか?あるいは、問題を解決する別の方法がありますか?または、そのようなプラグインを作成する方法についての良いチュートリアル(露出ビットを強調表示します)がありますか?

編集

二思想にそれが無効になると、どのようにJavascriptを任意の助けになるでしょうか?おそらく全体的なアイデアはちょっとばかりです。

答えて

0

つまり、Javascriptを有効または無効にするにはJavascriptが必要です。

function setJavascriptPref(bool) { 
    prefs = Components.classes["@mozilla.org/preferences-service;1"] 
      .getService(Components.interfaces.nsIPrefBranch); 
    prefs.setBoolPref("javascript.enabled", bool); 
} 
+0

「エラー:XPCComponents.classesプロパティを取得するために、の許可が拒否されました」と表示されます。 – artemave

3

あなたのテストは通常​​のウェブコンテンツ特権で実行されるとします。その場合、JavaScriptが有効かどうかなどのブラウザ設定に影響を与えることはできません(「JavaScriptサポートの切り替え」という意味です)。

私はJSのサポートを有効または無効にする方法(適切なprefを設定する)で簡単なXPCOMコンポーネントを実装します。あなたは、テストがそれにアクセスできるようにJavaScriptのグローバルプロパティとしてそれを公開することができます。詳細は、Expose an XPCOM component to javascript in a web pageを参照してください。コンポーネントをエクステンションにパッケージングし、テストが実行されているFirefoxインスタンスにコンポーネントがインストールされていることを確認します。

あなたのコンテンツスクリプトから直接好みのAPIにアクセスする場合は、いずれかの程度では、Firefoxに次のprefsを追加することができますが:configまたはあなたのプロファイルディレクトリにあるprefs.jsに以下の行を追加して:

user_pref("capability.principal.codebase.p1.granted", "UniversalXPConnect UniversalBrowserRead UniversalBrowserWrite UniversalPreferencesRead UniversalPreferencesWrite UniversalFileRead"); 
user_pref("capability.principal.codebase.p1.id", "http://www.example.com"); 
user_pref("capability.principal.codebase.p1.subjectName", "");` 
user_pref("signed.applets.codebase_principal_support", true); 

www.example.comを、権限を付与するドメインに置き換えます。

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 
+0

「通常のWebコンテンツの権限」と言えば、それを変更する方法はありますか?私は起動時にFF設定を制御しているからです。 – artemave

+0

私はいくつかの情報で私の答えを編集しました。 –

1

ローカルファイル(file:///からロードされた何かが)追加の権限を要求することが許可されている:あなたは好みのAPIを呼び出す前に、また、あなたのJSコードに次の行を追加します。通常、あなたがアクセスを許可するかどうかを確認するプロンプトになるだろう - あなたはFirefoxのプロファイルにprefs.jsに次の行を追加することで、プロンプトを「自動受け入れる」ことができます。

user_pref("capability.principal.codebase.p0.granted", "UniversalXPConnect"); 
user_pref("capability.principal.codebase.p0.id", "file://"); 
user_pref("capability.principal.codebase.p0.subjectName", ""); 

あなたのページは、その後行うことができます。

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
var branch = Components.classes["@mozilla.org/preferences-service;1"] 
         .getService(Components.interfaces.nsIPrefBranch); 
branch.setBoolPref("javascript.enabled", false); 

あなたのページがローカルファイルの場合は、これは間違いなく機能します。しかし、エラーメッセージで判断すると、現在コードはabout:blankです。 かもしれないcapability.principal.codebase.p0.idabout:blankまたはmoz-safe-about:blankに変更すると、そのページも拡張権限を得ることができますが、わかりません。

しかし、JavaScriptが既に無効になっていて、有効にする必要がある場合は、これは本当に役に立ちません。これは、エクステンションを作成してテストプロファイルに追加することによってのみ解決できます。 Firefox拡張機能のJavaScriptは、この設定に関係なく機能します。

関連する問題