私の古いFirefoxエクステンションをWebExtenstion APIに移行しています。ここに私の拡張子が何をするかです: Firefoxアドオン(WebExtension API)からWebページを変更する:要素に正しくアクセスする方法?
- は、ユーザーがボタンをクリックしたときに
- はオプション
- の4つの設定を指定し、ツールバーにボタンを追加し、私はURLを確認してください。 URLが3つの可能な値のいずれかと一致する場合は、オプションページの値を使用してページ上の入力要素を入力し、フォームボタンをクリックします。だからここ
は私のmanifest.jsonを次のとおりです。index.jsで
{
"manifest_version": 2,
"name": "Login",
"version": "3.0",
"description": "Login to myinterfaces",
"homepage_url": "localhost",
"icons": {
"48": "icons/button-1.png"
},
"permissions": [
"activeTab", "storage", "tabs"
],
"browser_action": {
"default_icon": "icons/button-1.png",
"default_title": "My Login"
},
"options_ui": {
"page": "options.html"
},
"background": {
"scripts": ["index.js"]
}
}
、私は成功し、オプションページから値を取得し、私のアクティブなタブのURLを決定します。その後、ページの値を変更しようとしています。ここで私はそれを行う方法です。
var doc = window.content.document;
doc.getElementById("btnLogin").disabled = false;
doc.getElementById("loginUserName").value = loginUserName;
doc.getElementById("loginPassword").value = loginPassword;
しかし
doc.getElementById("btnLogin").disabled = false;
...のために...私は取得しています:
TypeError: doc.getElementById(...) is null
をだから私は、このページをお読みください。https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Modify_a_web_page
すべてを正しく理解しているかわからないので、ここにいくつかの質問:
バックグラウンドスクリプトからWebページにアクセスできますか?可能であれば、私は持っているエラーにどのように対処するのですか?可能でない場合は、コンテンツとバックグラウンドスクリプトの間でメッセージングを使用するはずです。では、バックグラウンドスクリプトのloginUserNameとloginPasswordの値をコンテンツスクリプトに送信し、コンテンツスクリプトのページを変更する必要がありますか?それが正しいか?
おかげで、 ラクーン