2011-05-09 8 views
3

私が理解したところでは、Greasemonkeyを使用してファイルを読み取ることはできません。私は多くの静的な設定ファイルを定義する必要があり、ユーザスクリプトにそれらを直接組み込むのは完全に面倒です。Greasemonkeyスクリプト内の設定ファイル

そのデータを保存して取得するには、どのような方法が最適ですか?

答えて

5

はい、it is not possible, by design, to read local filesを使用して自動的にそれをロードすることができます。

ファイルがすべて1ページのテキストであり、それを頻繁に変更しない場合は、Dr.Molleの回答ごとにGM_getResourceText()を使用してください。

ファイルが大規模である場合、または急速に変更された場合は、サーバー上でホストし、実行時にGM_xmlhttpRequest()を使用して必要なファイルを読み込みます。下記の項目2を参照してください。 GM_getResourceText()を使用して


  1. 続行する最も簡単かつ最速の方法です。 configファイルのサイズが合理的な大きさ(平均で1K未満)であれば、このメソッドはおそらくAjaxに依存するメソッドよりも高速です(150(!!!)ファイルでさえ)。

    欠点:設定ファイルを編集する場合は、awkward pathをブックマークして覚えておく必要があります。 (EG:C:\Documents and Settings\<Windows login/user name>\Application Data\Mozilla\Firefox\Profiles\<profile folder>\gm_scripts\YOUR_SCRIPT_NAME\

  2. 比較的静的なファイルを使用できない場合や、使用したくない場合は、サーバー上に設定ファイルをホストして、GM_xmlhttpRequest()スクリプトが実行されるときに必要なファイル。

    独自のサーバーをお持ちでない場合は、Google Docsのような場所にファイルをホストできます。

  3. GM_getValue()を使用したりglobalStorage or local storageを使用すると、すべてについて configファイルのデータを取得し、非常に高速かつ効率的に(としたいデータのみ)することができます。しかし、を保存することは、あなた自身のツールを書くことができない限り(これは痛みですが、others have done it)、データが大きな痛みになることがあります。

  4. @requireを使用すると、設定ファイルが実際に有効なJavaScriptコードでない限り、GM_getResourceText()を超える利点はありません。また、この方法では、インクルードファイルの名前が変更されるたびに、またはファイルを追加または削除するたびに、スクリプトをアンインストールしてから再インストールする必要があります。
    推奨しません。

2

あなたはressourceロードできますhttp://wiki.greasespot.net/GM_getResourceText

+0

セッションの終了後、Ressourceはローカルハードドライブに残りますか?この方法で150個のファイルをロードするとスクリプトが遅くなると思いますか?選択的で適切な設定ファイルだけをロードする方法はありませんか? –

0

それとも、@require

+0

設定ファイルへのすべてのパスを配列に格納し、@requireのループを作成できますか?(私は約150の設定ファイルを持っているので、特にスクリプトのロード時に1つのファイルしか必要としないので、スクリプトの遅延を避けたい) –

+0

1つのファイルだけが必要な場合は、オンデマンドで動的にキャッシュに入れる(GM_xmlhttpRequestとGM_setValue) – w35l3y

関連する問題