Firefox 확장 프로그램에서 HTML 문자열을 DOM 개체로 어떻게 변환할 수 있나요?

StackOverflow https://stackoverflow.com/questions/3868

  •  08-06-2019
  •  | 
  •  

문제

XMLHttpRequest가 포함된 웹 페이지(태그 수프 HTML)를 다운로드 중이고 출력을 가져와 XPATH 쿼리를 실행할 수 있는 DOM 개체로 변환하려고 합니다.문자열을 DOM 객체로 어떻게 변환합니까?

일반적인 해결책은 숨겨진 iframe을 만들고 거기에 문자열 내용을 던지는 것 같습니다.가 있었다 말하다 업데이트 중 DOMParser text/html을 지원하기 위해 노력했지만 Firefox 3.0.1부터는 여전히 NS_ERROR_NOT_IMPLEMENTED 시도한다면.

숨겨진 iframe 트릭을 사용하는 것 외에 다른 옵션이 있나요?그렇지 않은 경우 코드가 현재 열려 있는 탭의 컨텍스트 외부에서 작동하도록(탭을 닫아도 코드가 망가지지 않도록) iframe 트릭을 수행하는 가장 좋은 방법은 무엇입니까?

이것 내가 글을 써야 한다면 iframe 해킹이 아닌 다른 솔루션을 찾고 있는 이유에 대한 예입니다. 모두 그 코드가 강력한 솔루션을 갖고 있다면 차라리 다른 것을 계속 찾고 싶습니다.

도움이 되었습니까?

해결책

Ajaxian은 실제로 iframe에서 HTML 삽입/검색에 대한 게시물 오늘.아마도 그들이 게시한 js 스니펫을 사용할 수 있습니다.

브라우저/탭 닫기를 처리하려면 onbeforeunload(http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx) 이벤트를 진행하고 필요한 모든 작업을 수행하세요.

다른 팁

이 시도:

var request = new XMLHttpRequest();

request.overrideMimeType( 'text/xml' );
request.onreadystatechange = process;
request.open ( 'GET', url );
request.send( null );

function process() { 
    if ( request.readyState == 4 && request.status == 200 ) {
        var xml = request.responseXML;
    }
}

주목하세요 재정의Mime 유형 그리고 응답XML.
그만큼 readyState == 4 완성 됐습니다'.

div를 만들어 보세요.

document.createElement( 'div' );

그런 다음 태그 수프 HTML을 div의 innerHTML로 설정합니다.브라우저는 이를 XML로 처리한 다음 구문 분석할 수 있습니다.

innerhtml 속성은 텍스트와 요소의 유효한 조합을 지정하는 문자열을 취합니다.innerhtml 속성이 설정되면 주어진 문자열은 객체의 기존 내용을 완전히 대체합니다.문자열에 HTML 태그가 포함 된 경우 문자열이 문서에 배치 될 때 구문 분석되고 형식화됩니다.

그렇다면 자바스크립트를 사용하여 웹페이지를 XML 개체로 다운로드하고 싶지만 웹페이지를 사용하고 싶지 않으신가요?사용자가 수행할 작업(탭이나 창 닫기 등)을 제어할 수 없으므로 OSX 대시보드 위젯이나 별도의 애플리케이션에서 이 작업을 수행해야 합니다.사용자가 브라우저를 닫는 것에 대해 걱정할 필요가 없다면 Firefox 확장도 작동합니다.

숨겨진 iframe 트릭을 사용하는 것 외에 다른 옵션이 있나요?

안타깝게도 지금은 아닙니다.그렇지 않으면 당신이 가리키는 간략한 요약 코드가 대신 그것을 사용할 것입니다.

그렇지 않은 경우 코드가 현재 열려 있는 탭의 컨텍스트 외부에서 작동하도록(탭을 닫아도 코드가 망가지지 않도록) iframe 트릭을 수행하는 가장 좋은 방법은 무엇입니까?

인용한 코드는 최근 브라우저 창을 사용하므로 탭을 닫아도 구문 분석에 영향을 미치지 않습니다.해당 브라우저 창을 닫으면 로드가 중단되지만 이를 처리할 수 있으며(예를 들어 로드가 중단되었음을 감지하고 다른 창에서 다시 시작) 자주 발생하지 않습니다.

iframe이 제대로 작동하려면 DOM 창이 필요하므로 현재로서는 깔끔한 해결책이 없습니다(Mozilla 파서를 사용하려는 경우).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top