脚本执行window.open('',...),然后通过innerHTML=xmlhttp.responseText写入xmlhttp.responseText,但脚本未加载。
最佳答案
通常,您会获得纯 Javascript 形式的 xmlhttp 请求响应,然后使用 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 验证码。
<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>
关于php - xmlhttp.responseText 可以包含 <script type ="text/javascript src="..."></script> 并加载吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4775444/