为什么jQuery的$ .get()不会将脚本元素插入DOM?

我使用$.get()从远程服务器检索HTML片段并将该片段插入DOM。 该代码段包含几个基本HTML元素和一个脚本元素。 插入所有基本元素,但脚本元素不插入。

示例代码段:

 

This is a paragraph

// JavaScript that will work with the HTML in the snippet

我已经通过查看Chrome网络检查器中检索到的资源来validation脚本元素是否在检索到的代码段中。 那么,为什么$.get()插入脚本元素,是否有可能做我想做的事情?

编辑:

为了澄清,我正在使用$.get()检索HTML代码段并使用$().html(data)将其插入DOM。

应该插入脚本元素,就像静态内容一样 – 脚本不会执行。 当您使用html()插入html时,它会映射到每个元素的innerHTML属性。 从历史上看,浏览器不执行以这种方式插入的脚本元素( 在某些情况下 IE除外)。

这也反映在HTML 5规范草案中innerHTML的定义中 :

注意:使用innerHTML插入的脚本元素在插入时不会执行。

如果要执行脚本,可以查找元素和eval()文本,或者从文本中创建新的脚本元素并将其正确插入DOM。

执行此操作时,脚本元素不会绑定到文档。 您需要自己插入脚本。

一种方法是调用一个回调函数来解析你的返回html并手动插入脚本。 像这样:`

 _insertScripts: function(html) { var sfrag = ']*>([\\S\\s]*?)<\/script>'; var matchAll = new RegExp(sfrag, 'img'); var matchOne = new RegExp(sfrag, 'im'); if(html.match(matchAll)) { $.map(html.match(matchAll), function(script) { eval( (script.match(matchOne) || ['', ''])[1] ); }); } } 

`

我已经看到一些使用jQuery的live()函数的解决方案,但我不确定它是如何工作的。