問題タブ [firefox-addon-webextensions]
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.
firefox-addon - 他のページ スクリプトの前に、Firefox アドオンの contentscript にスクリプトを挿入して実行させるにはどうすればよいですか?
私はブラウザの拡張機能/アドオンに取り組んでいます。Chromeで動作しているので、Firefoxで動作させようとしています。
アドオンを Firefox Developer Edition 49.0a2 (2016-07-25) にロードするようになりました。
私の拡張機能には content_script が に設定されてrun_at: document_start
いるため、他のページ スクリプトが実行される前にスクリプト タグを挿入できるため、オブジェクトを Web サイトでグローバルに利用できるようになります。
これは Chrome では正常に機能しているように見えますが、Firefox では、ほとんどの場合、他のページ リソースが最初に読み込まれるため、多少の競合状態であることが証明されています。
他のページ スクリプトが実行される前にスクリプトを挿入してロードできるように、コンテンツ スクリプトをロードする戦略はありますか?
ログを追加すると、何が起こっているのかをうまく切り分けることができます。このコンテンツ スクリプトの例では、次のようになります。
ファイルscripts/inpage.js
が単にログを実行する場合、
そして、次のようなスクリプトを含むページにアクセスします。
実際には、ステップ 2 とステップ 3 は非決定的な順序で実行されます。
どうもありがとう!
自分で試す勇気がある場合は、特別なブランチの公開リポジトリに Firefox 互換バージョンのスクリプトがあります: https://github.com/MetaMask/metamask-plugin/tree/FirefoxCompatibility
javascript - Firefox のメイン フレームでスクリプトを実行できないのはなぜですか?
Chrome をベースにした Firefox の新しい webExtensions フレームワークを使用して、webextension を作成しています。すべてのサンプル エクステンションは Nightly ビルドで動作するので、そこでテストしています。私がやろうとしているのは、ロード時にコンテンツ ページでスクリプトを実行することです。ここに私の background.js ページがあります:
background.js
これはナイトリーで機能します。バックグラウンド ページから詳細のリスト (「詳細は ...」) を取得し、コンテンツ ページのコンソールに "ok" の数行 (ロードされたリソースごとに 1 行) を取得します。Chrome でも同じように動作します (マニフェスト ファイルが若干異なります)。
私が欲しいのは、ページで 1 回だけ実行される 2 番目のバリエーションです。これは Chrome で問題なく動作します。Nightly では、メイン フレームから「詳細」メッセージが 1 つ表示されますが、コンテンツ ページのコンソールには何も表示されません。
これはタイミングの問題だと思いますが、何が問題なのですか?
manifest.json (Chrome で使用するために "applications":{...} を削除します)
javascript - クロスサイト リクエストとブラウザ アドオン
「新しい」WebExtensions システムで基本的な Firefox アドオンを開発しようとしています。
そうしたいです。
- Webページからテキストを抽出します(私が所有していません)
- リモート Web サイトを使用して評価する
- 結果を同じページに投稿する
問題は、アドオンで Web リクエストを行う方法です (ポイント 2)。XMLHttpRequest を使用できることがわかりましたが、セキュリティ上の理由から想像したとおり、リモート パスにアクセスできません。
これは、アドオンが外部にあると思っていたにもかかわらず、JavaScript コードがページ内で実行されているためです。
もちろん、結果はページ内にありますが、アドオンがプロキシとして機能してこのリクエストを行うことができると思います。そうは言っても、私はどのように、何をすべきかわかりません。
変なトリック (セキュリティ コントロールを削除するなど) は使いたくありません。「正しい」方法で行いたいのです。
私が理解していないのは、アドオンが作成されたページ内で実行するようにバインドされているかどうかです.
編集: OK、Chrome ドキュメントは実際には Mozilla ドキュメントよりも優れていることがわかりました。実際に XHR をクロスサイト要件に使用するには、マニフェストにコード行を追加する必要があります。
これが私が目指していることを行うための適切な方法であるかどうかはまだわかりません。
firefox - Firefox アドオンの新しいバージョンを AMO にアップロードすると、「プラットフォーム」のプロンプトが表示され続ける
SDK ( package.jsonなど)を使用して数年前に開発した既存の Firefox アドオンがあります。WebExtensions ( manifest.jsonなど)を使用してアドオンを書き直しました。新しいバージョンのテストに成功すると、すべてうまくいきました。
新しいバージョンをアップロードするために AMO に行ったとき、デフォルトで「すべてのプラットフォーム」がチェックされていました。そのボックスまたは他のプラットフォーム (Windows、Linux、Mac、Android など) の横にあるボックスをオンまたはオフにすることができました。アップロードする圧縮ファイルを選択すると、最終的に、ファイルがアップロードされ、エラーなしで正常に検証されたことを通知するメッセージが表示されました。
ただし、ファイルのアップロード後、プラットフォームのチェックボックスはすべて自動的にオフになります。さらに、それらはすべて障害者でした。そのフォームの [バージョンを追加] ボタンをクリックして続行すると、「少なくとも 1 つのプラットフォームが必要です」というエラー メッセージが表示されます。プラットフォームのチェックボックスが無効になっているため、いずれもチェックできないため、続行できません。
トラブルシューティングのテストとして、アップロードする古いバージョンのファイル (SDK を使用して開発されたバージョン) を選択しました。SDK ベースのファイルでは、プラットフォーム チェックボックスのチェックを外したり無効にしたりすることはありませんでした。そのため、WebExtensions バージョンで何が起こっているのかわかりません。
WebExtensions を使用してこれを経験した人はいますか?
javascript - Firefox アドオンでブラウザのロケール コードを取得する
Firefox アドオンを開発しています。ユーザーのブラウザで設定されている言語を特定する必要があります。ブラウザの現在のロケールを含む の
ようなオブジェクトはありますか?window.navigator
socket.io - ポップアップを閉じると Socket.IO 接続が切断される
WebExtensions で安定しているはずの Firefox 48 を使用しています。テスト アプリを Socket.IO に接続しました。ポップアップを閉じるとすぐに、socket.IO 接続が切断されます。コードは次のとおりです。
マニフェスト.json
main.html
myclient.js
私のnodeJSサーバーコード
接続が切断されないようにするにはどうすればよいですか? ティア
編集: Firefoxがサポートしていないことをここで読んだので、chromeでも同じ拡張機能を試しましたがbackground
、接続切断の問題は解決しません。
EDIT 2:アンドリューが言ったように私のコードを更新しましたが、まだ動作しません:
行にコメントを付けて上記のコードも試しましたscripts
が、まだ機能しません。
bgp.html
から接続の作成を削除するmyclient.js
と、接続はまったく行われません! つまり、bgp.html が機能していません。
javascript - WebExtension を Chrome から Firefox に移植しますか?
パッケージ化されておらず、コンピューター上の単なるディレクトリである、機能するChrome拡張機能を作成しました。これを Firefox にかなり簡単に移植できるはずだということがわかりました。
MDN の「 Google Chrome 拡張機能の移植」ガイドに従っていると、マニフェスト ファイルが完璧であることがわかりました。
次に、拡張機能の「Firefox での一時的なインストール」を実行する方法の指示に従いました。
ただし、ディレクトリ内のファイルをクリックしても何も起こりません。拡張機能が読み込まれません。何かアドバイス?拡張機能が Chrome で正常に動作し、エラーなく読み込まれることはわかっています。
manifest.json :
ChromeFormFill.js :
Background.js
Run.jsはただalert('hi')
.
Firefox にロードしようとしても、何もしません。何も起こりません。
javascript - Firefox アドオン ポップアップで任意のオブジェクトのドラッグを無効にする
さまざまなグラフィック要素で構成されるポップアップを持つ Chrome / Firefox の拡張機能を開発しています。ユーザーがこのポップアップからこれらのアイテムをドラッグ アンド ドロップしないようにします。Chrome でドラッグを無効にするには、次の CSS コードを使用できます。
しかし、これは Firefox では機能しません。この場合に機能する css 属性はありますか?
最小バージョンは次のとおりです: https://drive.google.com/open?id=0B4k6nM18722gNjY5VjVpREhpRTQ