質問編集履歴

1 文の変更

nekojiro

nekojiro score 3

2017/02/17 23:50  投稿

WebExtensionで特定のページにjsファイルを挿入したい
###前提・実現したいこと
firefoxのアドオンをwebextensionsで作っています。browser.storage.local.set()で保存した複数のurlと比較して一致したタブにtabs.executeScript()でjsファイルを挿入したい。あとbackgrond.jsのコンソールを見る方法はありますか?
`if (tab.status === 'complete'){}`の`tab.status`が[MDN
](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs)に書いてないのに動く理由も知りたい
firefoxのアドオンをwebextensionsで作っています。browser.storage.local.set()で保存した複数のurlと比較して一致したタブにtabs.executeScript()でjsファイルを挿入したい。
script.jsのconsole.log()のところにtabs.executeScript()を入れたい。
###発生している問題・エラーメッセージ
jsファイルが挿入されない
###該当のソースコード
**manifest.json**
```
   "content_scripts": [{  
       "matches": ["<all_urls>"],  
       "js": ["script.js"]  
   }],  
   "background": {
       "scripts": ["background.js"]
   },
    "permissions": [
      "storage",
      "activeTab",
    ]
```
**background.js**
**script.js**
```javascript
`function urlcheck(item) {
function urlcheck(item) {
 const urlkey2 = Object.values(item);
 for (const variable of urlkey2) {
   const href = window.location.href;
   if (variable === href) {
     browser.tabs.executeScript({
       file: 'page-eater.js',
     });
     var plus = 0;
     plus++;
   }
 }
 if (plus === 1) {  
   console.log('yes');  
 }  
}
browser.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
 if (tab.status === 'complete') {
   const gettingItem = browser.storage.local.get();
   gettingItem.then(urlcheck, onError);
 }
});
const gettingItem = browser.storage.local.get();
gettingItem.then(urlcheck);
```
###試したこと
[このサイトを参考にして作りました](https://groups.google.com/forum/#!topic/chrome-api-developers-jp/LxMOHwhIl98)
###補足情報(言語/FW/ツール等のバージョンなど)
  • JavaScript

    7181questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Firefox

    105questions

    Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る