問題タブ [google-chrome-storage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Saving files in a Chrome App
Summary
Normally I could download a bunch of files, but Chrome Apps won't show the download shelf when a download occurs. What would be the best way of getting around this limitation of Chrome Apps?
Ideas
- I could go about this by creating a zip file, but this would require the user to perform an extra step of unzipping the file.
- I'm able to silently download the files, and so I could display a prompt to the user when the file is downloaded, but this would require the user to manually search for the file in their downloads folder.
What I've Learned
- Everywhere on the internet tells me to use Chrome's download API, but this only works for Chrome extensions and not Chrome apps.
- I can't bring up a save as window because 50 save as windows for 50 files is unacceptable
- I can, however, bring up a prompt using
chrome.fileSystem.chooseEntry({'type': "openDirectory"}
to ask the user to choose a directory, but I can't find a way of saving to that directory. - My question is basically the same as How can a Chrome extension save many files to a user-specified directory? but for a Chrome app instead of an extension.
Project and Example Code
The app I'm building will be the same as this webpage I've built, but with a few modifications to make it work as a web-app.
This is how my website solves the problem
javascript - Chrome アプリ ストレージのネストされたオブジェクトから内部オブジェクトを取得する
Chrome ローカル ストレージにタイプの JavaScript オブジェクトがあります
オブジェクトには多くの内部オブジェクトがありますobj
。今の私の目的はe
、オブジェクトの属性に具体的にアクセスしてb
変更することです。私は最も基本的な方法を試しました。つまり、obj
使用して全体を取得し、値をchrome.storage.local.get('settings')
変更obj.settings.b.e
して保存し直しました。のサイズobj
が非常に大きくなるため、オブジェクト全体をメモリにフェッチしたくありません。ネストされたオブジェクト構造の内部オブジェクトにアクセスするための公式の手段(できれば)またはハックはありますか?
javascript - Chrome.fileSystem はデータをファイルに保存します
chrome.fileSystem API を使用して、Chrome ジオロケーション API から収集したデータを txt ファイルに保存しようとしていますが、これらの目的でファイルを作成することはできますが、プロセスの最後にファイルは空のままです。簡単にするために、最初に文字列 (1234567890) をファイルに追加してみました。コードでわかるように、コードのどの行が実行されないかを調査するためにいくつかの console.log を追加しました。コードは writableFileEntry.creatrwriter() から実行されていないようです。
manifest.json ファイルは次のようになります。
どんなガイダンスやアドバイスも素晴らしいでしょう!ありがとうございます
google-chrome-extension - Chrome 拡張機能で新しい要素を配列に追加する
私は、簡単なはずの問題で最も苦労しています。配列を使用してユーザーの単語のリストを保存するクロム拡張機能を作成しています。起動時に、配列に適切な量の単語を追加できるように、経過時間を確認します。ここのコードに従いましたChromeストレージに値をプッシュする方法次のように:
しかし、私が何をしても、この関数を何回呼び出しても、配列に追加された関数の最後の呼び出しのみが取得されます。たとえば、これが私の「myWords」配列である場合、次のようになります。
そして、私は電話をかけました
["dog","cat"] という 2 つの項目を持つ配列が残ります。表示されていないコードに何か問題がありますか? ありがとう
編集:非同期コールバックメソッドを設定した後に同じ問題を抱えている人は、storage.localとstorage.syncに注意してください!! ローカルに設定してコンソールで同期をチェックしていたため、非同期が機能していませんでした (これが新しい値が存在しなかった理由です)。ご協力いただきありがとうございます。非同期の提案と同じストレージの使用により、問題なく動作します!
javascript - devtools で拡張機能の chrome.storage を調べる
Chrome DevTools にはローカル ストレージとセッション ストレージの便利なインスペクターがありますが、chrome.storage.syncを検査するものはありませんか?
chrome://sync-internals/
拡張子ごとに同期されたストレージの実際の内容が表示されないようです。
javascript - base64 URL を暗号化/復号化するプラグインはありますか?
Chrome アプリを作成しました。chrome.Storage.local API を使用してビデオ ファイルの暗号化された base64 URL を保存し、認証されたユーザーのみが再生できるオフライン モードでその URL を使用してそのビデオを再生できないようにしたいと考えています。
chrome.Storage API について検索したところ、「ユーザーの機密情報は保存しないでください。ストレージ領域は暗号化されていません。」という文が見つかりました。それが、そのbase64 URLを暗号化したい理由です。
ありがとう。
javascript - 「名前空間」は chrome.storage でどのように使用されますか?
chrome.storage の名前空間部分に関するドキュメントが見つからないようです。どのように使用されますか?
ユーザーがその一部を有効または無効にすることができ、それらはすべて異なる設定を持つという意味で、「モジュール」に分割した拡張機能を開発しています。それらの設定を異なる名前空間に配置することは理にかなっていますか?
どんな助けでも大歓迎
javascript - オブジェクトに値を追加する Chrome.storage
予期しない動作をしている次のコード ブロックがあります。
私の目標は、「データ」キーと値のペアをストレージから取り出し、url のキーと分の値を使用してそのオブジェクトに新しいインデックスを追加し、以前の「データ」値を新しいものに置き換えることです。
代わりに、このコードが最初から正しく実行されるネストされた構造を作成していますが、その後の追加では、次のようにオブジェクト内にネストされた「データ」ブロックになります。
私が期待するのは
javascript - オブジェクトを Chrome ストレージに保存するが、取得時に異なる結果が返される
Chrome セッション全体で保持する必要があるブックマークのタグ付けシステムの情報を含むオブジェクトを使用しているため、それをローカル ストレージに保存し、新しいブックマークが作成されるたびに更新しようとしています。
新しいブックマークを作成するとき、関数を起動して、新しいブックマークと同じタグを持つ他のブックマークがあるかどうかを確認します。これにより、動的フォルダーのような機能を果たす「タグ グループ」にブックマークが整理されます。
ストレージ オブジェクトを設定すると、格納されているオブジェクトには期待するすべてのデータが含まれています。しかし、同じオブジェクトをストレージから取り出すとすぐに、ネストされたオブジェクトの 1 つが不思議なことに に変わりますnull
。コンソール出力を参照してください: top オブジェクトは、 function の set 呼び出しの直前updateStorage
です。一番下は、ストレージからそのオブジェクトを「取得」したときに返されるものです。tagGroups ブックマークが null になっていることに注意してください。ブックマーク自体はまだそこにあり、消えるのはタグ グループ オブジェクトだけです。私はこれを機能させるために、昼夜を問わずこれをいじりました。
モデルコードはこちら。コンテキストのためにすべてを含めましたが、最も関連性の高い部分は、createNewBookmark、updatePrimaryTreeWithTagGroups、および updateStorage メソッドです。
UPDATE : コードを編集して、ストレージから何かを設定/取得する前に、ブックマーク ツリーにすべての変更を加えてから、結果のオブジェクトでストレージを更新するための最後の呼び出しを行いました。私は文字通り、あるものを一度保存し、取得しようとするたびに別のものを取得しています。
javascript - この値を chrome.storage からどのように取得しますか?
私は Javascript/JSON にまったく慣れていないので、これは明らかなことかもしれません。クロム拡張JSファイルのchrome.storageに値を保存しています:
console.log が正しい値を返すため、正しく渡されたことがわかります。
次に、コンテンツ スクリプトでそれを取得しようとしましたが、[object Object] しか返されません。
なぜこれを行っているのかわかりません。