我的AJAX响应返回如下内容:
<div>
..
</div>
<script type="text/javascript">
..
</script>
<script type="text/javascript">
..
</script>
<div>
..
</div>
我想从脚本标签执行脚本(应该以浏览器方式工作)并在页面之后插入文本(div)。
答案 0 :(得分:0)
您的script
代码不需要type="text/javascript"
属性来实现跨浏览器兼容性。
您的JavaScript将从上到下执行。所以首先执行的任何脚本都将首先执行。最后添加文本插入,如下所示:
HTML:
<div id="myDiv"></div>
JavaScript的:
document.getElementById("myDiv").innerHTML = "hello";
答案 1 :(得分:0)
从ajax响应中提取脚本通常是不好的做法(缓存,安全性......)。 处理ajax响应中返回的数据(JSON)会更好。考虑使用JQuery或其他框架,因为它们提供跨浏览器功能和DOM操作内置。
请参阅以下DOM操作示例:
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.name + '</li>').appendTo($grouplist);
});
});
@ http://jsfiddle.net/qmacro/NJMyD/
如果你想在没有框架的情况下继续使用本机功能,javascript提供了可能依赖于浏览器的本机dom操作功能。
当您向主体添加新的<javascript>
元素时,它应该自动注册。
答案 2 :(得分:0)
感谢所有人。 我创建了这样的解决方案:
var scripts = [];
$(response).each(function(key, element){
if ($(element).is('script')) {
scripts.push(element.innerHTML);
} else {
$('test').append($(element));
}
});
$.each(scripts, function(key, element){
eval(element);
});