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

我一直在努力让这一天整理好,但真的无法弄明白。 我有一个页面

,它是从基于标签的菜单中填充的,其中包含存储在包含一些javascript(主要是表单validation)的外部文件中的HTML代码片段。

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

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

非常感谢 :)

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

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

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

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

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

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

如果你通过Ajax获取html,并且html中有一个标签,你通过类似$('#foo').append(html)东西将html写入你的文档,那么JS应该立即运行任何麻烦。

在将内容添加到页面时, jquery自动处理在ajax请求中收到的脚本。 如果您遇到特定问题,请发布一些代码。

看到这个链接

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