Может ли xmlhttp.responseText содержать - PullRequest
0 голосов
/ 23 января 2011

Сценарий выполняет window.open ('', ...) и затем записывает xmlhttp.responseText, выполняя innerHTML = xmlhttp.responseText, но сценарий не загружается.

Ответы [ 3 ]

2 голосов
/ 23 января 2011

Как правило, вы получите ответ на запрос xmlhttp в виде чистого Javascript, а затем воспользуетесь функцией Javascript eval ():

function callback() {
    var result = xmlHttp.responseText;
    eval(result);
}

В этом случае вы бы НЕ рассматривали это как HTML. Вместо этого вы бы вернули чистый код. Разница:

Не делайте этого на своей странице, которую вы называете

<script type="text/javascript">
alert('xmlhttprequest loaded!');
</script>

Сделайте это вместо

alert('xmlhttprequest loaded!');

Так что, по сути, так и происходит:

function callback() {
    var result = xmlHttp.responseText;
    eval("alert('xmlhttprequest loaded!');");
}

Но вы не хотите, чтобы это произошло:

function callback() {
    var result = xmlHttp.responseText;
    eval("<script>alert('xmlhttprequest loaded!');</script>");
}

Есть некоторые проблемы, связанные с этим, например, eval может быть медленным. Google javascript eval, чтобы увидеть, что говорят другие.

=== РЕДАКТИРОВАТЬ ===

Использование метода DOM в отличие от xmlhttprequest фактически может быть тем, что нужно сделать оригинальному постеру, который динамически загружает код Google CAPTCHA.

<html>
<head></head>
<body>
<script type="text/javascript">

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "http://google.com/captcha/location";
head.appendChild(script);

</script>
</body>
</html>

Кроме того, если вам нужно приземлиться где-нибудь, вы можете сделать что-то вроде:

<html>
<head></head>
<body>
<div id="captcha">
</div>
<script type="text/javascript">

var captcha = document.getElementById('captcha');
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "http://google.com/captcha/location";
captcha.appendChild(script);

</script>
</body>
</html>
1 голос
/ 23 января 2011

Взгляните на эту статью

 eval(xmlhttp.responseText);
0 голосов
/ 23 января 2011

Возможно, вы захотите оценить responseText в javascript.

Возможно, вы захотите убедиться, что responseText исходит из вашей собственной серверной системы, чтобы избежать атак XSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...