在.innerHTML中插入JavaScript不会导致它运行。
我有一个用户提交帖子的迷你Feed。这将启动一个ajax调用,将用户数据保存到mysql表中。从那里PHP生成xhtml。从那里PHP生成的xhtml作为响应文本发送回javascript。这个xhtml包含用于显示“漂亮时间”的嵌入式javascript。
现在,如果PHP生成的xhtml / javascript以非ajax方式发送到客户端,则可行。但是当我将它作为responseText发送然后使用.innerHTML更新DOM时,它不起作用。无论在XHTML中使用javacript的机制是什么,似乎都不喜欢将嵌入式javascript写入封闭div标签的.innerHTML属性。
这有一个简单的解决方法吗?或者我是否必须在javascript中构建UI而不是将其全部插入到innerHTML中......在之前的帖子中有人提到过.innerHTML不是好习惯。也许这就是他们的意思。
答案 0 :(得分:3)
你是对的,innerHTML
不会这样做,如果你想动态创建一个脚本标签,你需要使用document.createElement
来创建一个脚本标签,但是它有所有的与eval
相关的同样精彩的安全奖金。
但这是另一个想法。在主页面中定义一些函数不是更好,在附加任何新内容之后,将日期设置为“漂亮”模式而不需要让AJAX响应知道它的任何内容吗?
答案 1 :(得分:1)
以下代码应该有效:
function onSuccess() {
src = document.createElement('script');
src.innerHTML = this.responseText;
document.body.appendChild(src);
}
但是我同意cwallenpoole,为什么不能将所有javascript代码(对于相当漂亮的日期)已经在主页中进行了高级编写? (或包含的脚本或其他内容)。