【发布时间】:2017-04-05 23:02:42
【问题描述】:
以下不是我的实际项目,而是一个和我的项目有同样问题的例子。
这是主要的 HTML 页面 sn-p:
<div id="divExample">Before</div>
<script type="text/javascript">
loadExample();
</script>
这是 javascript 文件 sn-p:
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById('divExample').innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","mypanel.html",true);
xmlhttp.setRequestHeader("If-Modified-Since", "Sun, 31 Dec 1899 23:59:59 GMT");
xmlhttp.send();
这是获取的 mypanel.html:
After
<script type="text/javascript">
alert("Fetched script is working.");
</script>
当我加载主 HTML 页面时,AJAX javascript 运行良好。它获取 mypanel.html 并将其内容放入 divExample.innerHTML。 “After”一词正确显示,而不是“Before”。
但是,带有警报的脚本永远不会执行。我不想将警报脚本与 mypanel.html 分开。有什么想法可以在 AJAX 加载后执行吗?
我读过here 说这是可以做到的。
我读过here 说这是不可能的。
有什么想法可以实现吗?
【问题讨论】:
-
您是否有理由将警报与响应一起存储?您最好将其放在响应处理程序中的行之后。响应实际上并未按照您对其进行编码的方式进行评估/执行。如果你运行 eval();在它将运行的响应上(没有脚本标签,您可能需要在响应中包含类似这样的内容:var reponseHtml = 'After'; 并在您的 innerHtml 代码中使用它)。祝你好运。
-
好吧,真正的代码不是警报。这只是我的实际项目遇到的问题的一个例子。实际代码进行各种操作,我希望它与 HTML 保持一致。但是您对其进行评估的想法值得一试。也许我可以从响应中解析脚本,然后对其进行评估。这是一个有趣的方法。我会检查一下。谢谢!
标签: javascript ajax