탈출 한 HTML을 포함하는 javascript 변수가 있습니다. 이 같은 HTML 내부에 스크립트 태그가있을 수 있습니다 :Javascript IE의 HTML 및 스크립트 삽입 문제
var valueToInsert = "%3Cscript%20type%3D%22text/javascript%22%3Ealert%28%27test%27%29%3B%3C/script%3E%0A%3Cscript%20type%3D%22text/javascript%22%20src%3D%22http%3A//devserver/testinclude.js%22%3E%3C/script%3E%0A%3Cimg%20src%3D%22http%3A//www.footballpictures.net/data/media/131/manchester_united_logo.jpg%22%20/%3E"
내가 예상대로 해고 모든 자바 스크립트를 DOM에 이것을 추가하고 싶어. - 모든 스크립트 태그가 제거 IE에서
var div = document.createElement("div");
div.innerHTML = unescape(valueToInsert);
document.body.appendChild(div);
, 내가 div.innerHTML을 설정 한 시간에 : 지금은이 방법을 사용하고 있습니다. I가 jQuery를 사용하여이 작업을 수행 할 경우
는 :
$(document.body).append(valueToInsert)
를 모든 것이 잘 작동합니다. 나쁜 것은,이 코드가 "이미 구현 된"스크립트를 사용하는 것을 통제하지 않는 사이트에 추가 될 것이므로 jQuery를 사용할 수 없다는 것입니다.
트릭이 있습니까? jQuery가 그것을 할 수 있다면, 가능해야한다?
나는 Opera에서 또 다른 문제가 있습니다. 주입 스크립트를 다음과 같이 변경했습니다. (여전히 IE에서는 작동하지 않습니다.)
var div = document.createElement("div");
div.innerHTML = unescape(valueToInsert);
var a = new Array();
for (var i = 0; i < div.childNodes.length; i++)
a.push(div.childNodes[i]);
for (var i = 0; i < a.length; i++)
{
if (a[i].nodeName == "SCRIPT" && a[i].getAttribute("src") != null && a[i].getAttribute("src") != "" && typeof (a[i].getAttribute("src")) != "undefined")
{
var scriptTag = document.createElement("script");
scriptTag.src = a[i].getAttribute("src");
scriptTag.type = "text/javascript";
document.body.appendChild(scriptTag);
}
else if (a[i].nodeName == "SCRIPT")
{
eval(a[i].innerHTML);
}
else
{
document.body.appendChild(a[i]);
}
}
페이지를 렌더링 한 후 실행될 때 페이지가 지워지므로이를 수행 할 수 없습니다. – MartinHN