私たちのFirefoxアドオンは、バックエンド(main.js
)でGoogleにクエリーを発行し、xpathでいくつかのコンテンツを抽出します。この目的のために、innerHTML
を使用して、xpath解析用のdocument
インスタンスを作成します。このアドオンは、innerHTMLプロパティ、jQuery.html、または同様の手段を通じて割り当てることによって、潜在的にunsanitizedデータを含むHTML文字列からDOMノードを作成しているFirefoxアドオンのための `nsIParserUtils.parseFragment()`の使い方
:私たちはMozillaのにこのアドオンを送信するときので、しかし、我々は拒否されました。非効率的であることを除けば、これは大きなセキュリティリスクです。詳細については、提供されたリンクに続きhttps://developer.mozilla.org/en/XUL_School/DOM_Building_and_HTML_Insertion
を参照してください、私たちはnsIParserUtils.parseFragment()
でinnerHTML
を交換しようとしました。しかし、サンプルコード:関数引数としてdocument
(doc
)を必要としながら
let { Cc, Ci } = require("chrome");
function parseHTML(doc, html, allowStyle, baseURI, isXML) {
let PARSER_UTILS = "@mozilla.org/parserutils;1";
...
Cc, Ci
ユーティリティは、main.js
のみを使用することができます。 document
をmain.js
に作成する例は見つかりませんでしたが、document.implementation.createHTMLDocument("");
は使用できませんでした。 main.js
は、グローバルな組み込みのdocument
への参照を持たないバックグラウンドスクリプトです。
私はたくさんのGoogle検索を行ったが、解決策はまだ見つかりませんでした。誰かが親切に手伝ってくれましたか?
あなたの主なスクリプトが複数の ''要素へのアクセスを持っています。どのドキュメントを選択するかは、そのドキュメントが存在するネームスペース(XULまたはHTML、その他の可能性がある)、または ''が必要な目的に大きく依存します。側面の問題は、「」に組み込まれた「グローバル」がないことです。 ''要素がたくさんあります(タブごとに少なくとも1つ以上+その他)。 [この回答](http://stackoverflow.com/a/29228418/3773011)には、現在のブラウザウィンドウの* a * ''と* a * ' 'の参照を取得するコードがあります。 –
Makyen