【问题标题】:responseText contains javascript code and the code doesn't loadresponseText 包含 javascript 代码并且代码不加载
【发布时间】:2011-01-24 01:52:49
【问题描述】:

字符串:

<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6..."></script>

来自 XMLHttpRequest() 请求,由 php 生成,然后用 javascipt 写入新窗口,但未加载脚本。尽管源代码包含该字符串,但窗口打开为空白。

会不会是编码问题?

字符串是'echo recaptcha_get_html($publickey)'的结果,这里是recaptcha脚本提供的PHP函数。

【问题讨论】:

  • 您可以添加一个示例或其他内容的链接,并可能重写问题的标题吗?现在这不是很多事情要做!
  • 您确定它没有被视为文本而不是HTML源吗?也许你正在做类似newWindow.appendText(response) 而不是newWindow.appendHTML(response)
  • 我做 win.document.getElementById("main").innerHTML=xmlhttp.responseText;

标签: php javascript xmlhttprequest-states


【解决方案1】:

通过设置 .innerHTML 创建脚本标签通常不会导致这些脚本被执行。也有例外,比如在 IE 浏览器的 script 标签上设置了“defer”属性,但通常这可能不是可行的方法。 (我不确定“async”属性会做什么。我可以看到 async="true" 导致以这种方式创建的脚本工作,但我还没有测试过。)

完全可行的方法是创建元素(“脚本”),然后在其上设置 .src,然后将其填充到 DOM 中的某个位置。它不仅会加载并运行它,而且在许多情况下,它会异步执行(相对于阻止页面加载其余部分的常规脚本标签),这通常会更好。

【讨论】:

  • 也不适用于 async=false。我不能做 createElement("script") 因为我从'echo recaptcha_get_html($publickey)' 收到 html 代码。除了innerHTML,我还能使用什么其他插入方法?
猜你喜欢
  • 1970-01-01
  • 2021-05-24
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
  • 1970-01-01
相关资源
最近更新 更多