ProgramingTip

jQuery를 사용하여 전체 HTML 노드를 어떻게 교체합니까?

bestdevel 2020. 12. 10. 20:57
반응형

jQuery를 사용하여 전체 HTML 노드를 어떻게 교체합니까?


다음과 같은 곳이 있습니다.

<html><head><title>example</title></head><body>some example text</body></html>

AJAX 요청에 대한 결과 로이 반환됩니다.

브라우저에서 배포하고 표시하고 싶습니다. 아이디어는 다음과 같이하는 것입니다.

$('html').parent().html(myString);

음, 작동하지 않습니다. IFRAME을 사용하려고 시도했지만 작동하는지 알아 봅니다.

참고 : 이 행사를 설명 수 없습니다. 서버에 대한 호출 에서이 많은 것을 다시 생성하는 것도 불가능합니다 (그렇지 않은 브라우저를 해당 URL로 리디렉션 할 수 있음).


document.open/write/close 메소드는 원하는 작업을 수행합니다.

var newDoc = document.open("text/html", "replace");
newDoc.write(myString);
newDoc.close();

매개 변수를 전달하지 않는 한 document.open 호출은 페이지 기록을 추가합니다. 따라서 사용자는 이전 페이지로 이동 뒤로 뒤로 두 번 클릭해야합니다.


html 태그를 다음 모든 것을 html 요소 안에 넣을 수 있습니다.

$('html').html(myString.replace(/<html>(.*)<\/html>/, "$1"));

바로 firefox (47.0) 솔루션 :

var newDoc = document.open("text/html", "replace");
newDoc.write(response);
newDoc.close(); 

파이어 폭스에서 뒤로 버튼을 쉽게 이전 기록 항목이로드되기 때문에 제안 된대로 작동하지 않습니다. 즉, "바꾸기"를 사용하는 전체 요점은 사용자가 뒤로 버튼을 클릭하지 않고 마지막 이전 페이지보기로 만하는 것입니다. document.write ()가 호출 된 시간. 어디에서 언급 한 효과를 일으키지 않는 방법은 문서에서 직접 메소드를 호출하는 것입니다.

document.open("text/html", "replace");
document.write(response);
document.close();

대체 옵션을 사용하면 사용자 기록을 쓰레기로 채우는 브라우저가 변경 사항을 기록 할 수있는 것이 아니라 브라우저가 변경 사항을 기록 할 수 있습니다. 도움이됩니다. 이전 / 앞으로 작업을 처리 할 때 (예를 들어, 기록이 되 돌린 문서에서 document.write ()를 수행 한 후 URL에 'wyciwyg : // (somenumber)'를 추가하는 경우)에서 기록에서 javascript로 문서 모든 문서에 추가 할 수 있습니다. 이전 상태로).


시도 할 또 다른 변형은

$('html').replaceWith(myString);

http://api.jquery.com/replaceWith/


document.documentElement.innerHTML = myString;

IE9는 제외하고 작동합니다.

참고 URL : https://stackoverflow.com/questions/1236360/how-do-i-replace-the-entire-html-node-using-jquery

반응형