从加载了AJAX的外部文件运行Javascript

时间:2010-12-09 17:14:29

标签: javascript jquery ajax

我一直在努力让这一天整理好,但真的无法弄明白。我有一个带有<div id="ajax"></div>的页面,该页面填充了基于标签的菜单,其中包含存储在包含一些javascript(主要是表单验证)的外部文件中的HTML代码片段。

我已经在需要eval()代码的地方看到过,但是在人们说最后要做的事情的同一方面。

有人可以指出我正确的方向,并提供一个示例,如果可能,因为我是jQuery / JavaScript的新手。

非常感谢:)

3 个答案:

答案 0 :(得分:1)

如果您通过Ajax获取html,并且html中有一个<script>标记,并且您通过类似$('#foo').append(html)之类的内容将html写入您的文档,那么JS应该立即运行而不会有任何麻烦任何。

答案 1 :(得分:1)

  

提取存储在包含一些javascript(主要是表单验证)的外部文件中的HTML代码片段。

避免这样做。将<script>写入innerHTML不会导致脚本被执行...虽然之后移动元素可以使其在不同浏览器的不同时间执行。

所以它在实践中是不一致的,无论如何包含脚本真的没有任何意义:

  • 当您加载相同的代码段两次时,您将运行相同的脚本两次,这可能会重新定义绑定到页面的一些函数或变量,这可能会让您非常奇怪且难以处理调试情况

  • 非异步/延迟脚本期望在解析时运行,并且可能包括在插入现有文档时无法工作的技术(在document.write的情况下,这通常会破坏整个脚本页面,尝试加载第三方广告/跟踪脚本时的常见症状。)

是的,jQuery 尝试通过提取脚本元素并执行它们,使浏览器之间的某些内容更加一致。但不,它无法修复所有情况(原则上不能)。所以不要问它。保持脚本静态,并运行需要在加载回调中发生的任何绑定脚本代码。

答案 2 :(得分:0)

在向页面添加内容时,

jquery会自动处理在ajax请求中收到的脚本。如果您遇到特定问题,请发布一些代码。

请参阅this链接

  

dataType:“html” - 将HTML返回为   纯文本; 包含的脚本标记是   在插入DOM时进行评估。