파이어 폭스 애드온은 백엔드 (main.js
)에서 Google에 질의를하고 xpath를 통해 일부 내용을 추출합니다. 이를 위해 innerHTML
을 사용하여 xpath 구문 분석을위한 document
인스턴스를 만듭니다. 이 부가 기능은 innerHTML을, jQuery.html, 또는 유사한 수단을 통해 할당하여, 잠재적으로 unsanitized 데이터가 포함 된 HTML 문자열에서 DOM 노드를 만드는파이어 폭스 애드온에`nsIParserUtils.parseFragment()`를 사용하는 방법
: 우리는 모질라이 부가 기능을 제출할 때 때문에, 우리는 거부되었다. 비효율적 인 것 외에도 이는 주요 보안 위험 요소입니다. 자세한 내용은 제공된 링크를 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
에 대한 참조가 없습니다.
나는 많이 봤지만 어떤 해결책도 찾을 수 없었다. 아무도 친절하게 도와 줄 수 없었습니까?
주 스크립트 요소''다수에 액세스 할 수 있습니다. 어떤 것을 골라 내는지는 문서가 존재할 네임 스페이스 (다른 가능성을 가진 XUL 또는 HTML) 또는 ''이 필요한 용도에 따라 크게 달라집니다. 부작용은 ''에 "global"이 없다는 것입니다. ''요소가 많이 있습니다 (탭당 + 1 개 이상 다른 요소 이상). [이 답변] (http://stackoverflow.com/a/29228418/3773011)에는 현재 브라우저 창에 대해 * a *''및 * a *' '을 참조하는 코드가 있습니다. –
Makyen