php - xmlhttp.responseText 可以包含 <script type ="text/javascript src="..."></script> 并加载吗?

标签 php javascript xmlhttprequest

脚本执行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 可以包含 &lt;script type ="text/javascript src="...">&lt;/script&gt; 并加载吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4775444/

相关文章:

php - Html 表单 - php - mysql 日期字段?

javascript - 如何在 Javascript 中向数组添加其他对象

javascript - 正则表达式数学表达式单步拆分

javascript - 如何在 Javascript 中请求受密码保护的页面

javascript - 在 PHP 代码中调用 HTML 代码

php - 存储到 MySQL 之前进行检查和剥离

php - Travis-CI:如何在构建之间缓存 Composer 可执行文件?

javascript - 没有 #id 的目标 DIV,添加 #id

javascript - 如何获取文本区域的值?

javascript - 用户代理(浏览器)不通过 h​​ttps 提示输入凭据