私はChrome内部ツールとして使用される拡張機能に取り組んでいます。その必要な動作は次のとおりです。
この質問は以前に尋ねられました 、しかしその後の答えは " se NPAPI "、および NPAPIは現在遺棄されています でした。
それで、これを達成するために現在利用可能な方法は何ですか?私が見たものは次のとおりです。
私が試すことができる別のアプローチはありますか?
あなたはかなり多くの研究を行ってきました。実際、通常のWebページは、プラグインまたは拡張機能なしではユーザーのファイルシステムに書き込むことができません。また、 HTML5 Filesystem API は、あなたが観察したように、仮想ファイルシステムへのアクセスのみを提供します。
ただし、 chrome.fileSystem
HTML5 FileSystem APIを使用したAPI。 HTML FileSystem APIとは異なり、ChromeのfileSystem
(アプリ)APIは、ユーザーのファイルシステムに直接書き込みできます(例:~/Documents
または%USERPROFILE%\Documents
)、ユーザーが指定します。
このAPIは、拡張機能ではなくChromeappsでのみ使用可能です。これは特に問題ではありません。アプリと拡張機能をインストールし、拡張機能(ページアクション)とアプリ(ファイルシステムアクセス)の間で通信するために メッセージの受け渡し を使用できるため、内部ツールを開発する( example )。
約 - chrome.downloads
:拡張機能は内部にあるため、このAPIを使用するために、ユーザーにベータ/開発チャンネルへのアクセスを強制することができます。このAPIの唯一の制限は、ファイルがユーザー定義のダウンロードフォルダー(のサブディレクトリ)に保存されることです。
編集:chrome.downloads
APIは、安定ブランチを含むすべてのチャネルで利用できるようになりました(Chrome 31)以降)。
私はあなたが宿題をしたことを恐れています。つまり、考えられるすべての選択肢を検討したということです。
あなたが望むものを正確に達成するための最良の方法は、(あなたが述べたように)サポートするネイティブアプリを使用し、ネイティブメッセージングを介して通信することです。ところで、イントラネットでは帯域幅が問題になることはめったにないので、リソース(画像など)のURLを渡し、アプリをダウンロードして保存する方が簡単な場合があります。
(はい、単純に拡張機能を開発するよりも面倒ですが、彼らがしなければならないことをしなければなりませんよね?)
一方、開発の単純さよりもユーザーエクスペリエンスを少し犠牲にする場合は、HTML5グッズ(ファイルをローカルで作成およびダウンロードできる)とJSジッピングライブラリ(=JSZip)。したがって、ユーザーは単一のZipファイルをダウンロードするだけで済みます(1回だけプロンプトが表示されます)。ところで、ユーザーが希望する場合、ユーザーはプロンプトを表示せずに常にファイルをダウンロードすることを選択できます(ただし、既に知っています)。
ネイティブメッセージングアプリのアイデアを使用します。
ネイティブアプリは扱いにくく、ドキュメントが貧弱なので書くのが苦労します。また、両端でJSONフォーマットを正確に取得しないと、stdinとstdoutが引き継がれるため、コンソールには何も表示されません。
ただし、標準ツール(Windowsエクスプローラー、16進エディター、TeamViewerなど)を使用してファイルを表示、移動、削除したり、何が起こっているかを確認したりできるため、完了したらより幸せになります。 Chromeのサンドボックス化されたファイルシステムは動作しますが、今では行き止まりのようです(他のブラウザはそれを選択していません)。サードパーティ製のツールを開発する人はいないでしょう。もちろん、すべてが機能したらツールはおそらく必要ありませんが、それまでは、どのファイルがどのディレクトリにあるか、ファイルのバージョンが残っているかを追跡するためにコード(および非常に多くのコード)を書く必要があるため、デバッグは悪夢ですディスクスペース...