1

現在、ユーザースクリプトの 1 つを Chrome 拡張機能に変換しています。私がまだ立ち往生しているのは、ローカルストレージの値をコンテンツスクリプトの変数に正常に保存することだけです。ここで 1 つの例を挙げます。他のものは似ていますが、名前が異なります。

var REMOVE_WARNINGS;

chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
console.log(response.status);
REMOVE_WARNINGS = response.status == "true";
});

ご覧のとおり、「REMOVE_WARNINGS」に割り当てられた値について、拡張機能の localStorage をクエリします。これは、コンテンツ スクリプトのさらに先で、この変数が特定のアクションを実行する必要があるかどうかを確認するためにチェックされるためです。元の値は、HTML オプション (true または false) によってオプション ページを介して localStorage に割り当てられます。これは問題なく発生します。値「true」(または「false」) が正常にコンテンツ スクリプトのメソッドに返され、コンソールに出力されます。これは、私が確認したためです。機能しないのは、コンテンツ スクリプトのグローバル変数REMOVE_WARNINGSに値を割り当てることです。

を含むいくつかのオプションを試しました。またREMOVE_WARNINGS = response.status;REMOVE_WARNINGS = response.status == "true";破壊的に印刷される可能性があると考えて、コンソール出力行を削除しようとしました。これらのオプションのいずれも、ブール値「true」または「false」をグローバル変数に正常に格納していないようです。これは、スクリプトが実行すべきアクションを実行しないためです。

ここで私が間違っていることを誰かが見ていますか?特に値を明確に読み取ることは問題ないため、この時点で完全に迷っています。それをコンテンツ スクリプトのグローバル変数に格納しているため、これが問題です。

乾杯ケネス

4

1 に答える 1

3

私が間違っている場合は修正してください。ただし、次のようなことをしようとしていると思います。

var REMOVE_WARNINGS;

chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
    console.log(response.status);
    REMOVE_WARNINGS = response.status == "true";
});
console.log(REMOVE_WARNINGS); //this console.log will fail? right?

次のようにコードを変更してみてください。

chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
    console.log(response.status);
    REMOVE_WARNINGS = response.status == "true";
    doSomething();
});

function doSomething() {
    console.log(REMOVE_WARNINGS); //this one should work
}
于 2013-01-20T14:37:25.630 に答える