我們的Firefox插件在後端向Google發送查詢(main.js
),然後通過xpath提取一些內容。爲此,我們使用innerHTML
爲xpath解析創建document
實例。但是,當我們提出這個插件Mozilla的,我們得到了拒絕,因爲:如何使用nsIParserUtils.parseFragment()用於Firefox插件
這個插件是由含有潛在unsanitized數據HTML字符串創建DOM節點,將其分配給innerHTML的,jQuery.html,或通過類似手段。除了效率低下之外,這是一個主要的安全風險。欲瞭解更多信息,請參閱https://developer.mozilla.org/en/XUL_School/DOM_Building_and_HTML_Insertion
以下提供的鏈接,我們試圖用nsIParserUtils.parseFragment()
更換innerHTML
。然而,示例代碼:
let { Cc, Ci } = require("chrome");
function parseHTML(doc, html, allowStyle, baseURI, isXML) {
let PARSER_UTILS = "@mozilla.org/parserutils;1";
...
的Cc, Ci
實用程序只能在main.js
使用,而函數需要一個document
(doc
)作爲參數。 但我們找不到任何關於在main.js
內部創建document
的例子,我們無法使用document.implementation.createHTMLDocument("");
。因爲main.js
是後臺腳本,它沒有引用全局內置document
。
我搜索了很多,但仍找不到任何解決方案。有人可以幫忙嗎?
主腳本訪問多個''元素。您選擇的內容很大程度上取決於您希望該文檔存在的命名空間(XUL或HTML,以及其他可能性),還是您需要''的目的。一個側面的問題是,在「」中沒有構建「全局」;有很多''元素(每個標籤+其他至少一個以上)。 [這個答案](http://stackoverflow.com/a/29228418/3773011)的代碼可以得到當前瀏覽器窗口的引用* a *''和* a *''。 –
Makyen