从AJAX响应中提取并执行脚本
Extract and execute scripts from AJAX response
我的AJAX响应返回如下内容:
<div>
..
</div>
<script type="text/javascript">
..
</script>
<script type="text/javascript">
..
</script>
<div>
..
</div>
我想从脚本标签执行脚本(应该跨浏览器工作),并插入文本(div)页后。
您的script
标签不需要跨浏览器兼容的type="text/javascript"
属性。
你的JavaScript将从上到下执行。所以无论哪个脚本先出现,都会先执行。最后添加文本插入,像这样:
HTML:<div id="myDiv"></div>
JavaScript: document.getElementById("myDiv").innerHTML = "hello";
从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>
元素到主体时,它应该被自动注册。
感谢大家。我创建了这样的解决方案:
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);
});
相关文章:
- 如果返回的数据是javascript,$.ajax会自动执行脚本吗
- 如果条件匹配,则停止执行脚本
- 加载服务器端渲染的React组件后执行脚本
- 量角器使用ElementArrayFinder执行脚本怪异
- 在selenium python中执行脚本
- 仅当脚本在视口中时执行脚本
- Chrome扩展:加载窗口后执行脚本
- FireFox扩展对TinyMCE编辑器执行脚本注入
- HTML表单-按'时执行脚本;输入',无需提交
- 当超出范围时,延迟执行脚本Jquery(或SetTimeOut)BUT
- 在执行脚本之前,请查看对象是否未定义
- 如何在整个网页加载后执行脚本
- 多次执行脚本的 jQuery
- 从另一个文件执行脚本
- 从单独的.php文件中执行<脚本>
- 如何防止执行脚本但在 DOM 中显示它
- 在 Mac 上的 Firebug 中继续执行脚本的快捷方式是什么?
- 文档.写入脚本内部不执行脚本
- 在页面加载之前在 ajax 请求的页面上执行脚本
- 如何对包含在父 html 中的子 html 文件执行脚本