为什么jquery的.load()会忽略<script>?</script>

时间:2011-06-08 04:55:26

标签: javascript jquery

我有一个看起来像这样的每个常见页面a.html:

<html>
  <head>
    <script type="text/javascript" src="xyz.js" > </script>
  </head>
  <body>
    <div> ... </div>
  </body>
</html>

在b.html中,我使用jquery的.load()函数到div

$("#myDiv").load("a.html")  

有效。 xyz.js的内容与a.html一起加载。但为什么没有<script>标签?我打开萤火虫看源头。有一个但没有<script>

我想要<script>,因为我需要它来找到相对路径。 (this question

修改:我尝试使用.get().html()。没有帮助。

Edit2:标题不太合适。 xyz.js运行。但没有<script>

2 个答案:

答案 0 :(得分:6)

.load()功能有目的地从加载的内容中删除<script>标记。当您为其提供要加载的纯URL时,它将在加载内容并将其添加到DOM后执行脚本。但是,如果您使用在第一个参数中之后添加选择器的技巧:

$('#foo').load("http://some.domain.com/blah #special-div");

然后它会删除<script>标记但执行它们。

为什么呢?我不知道。

现在,请注意,将<html>标记中的整个页面加载到另一个页面的元素中会导致某种类型的Frankenstein怪物出现在DOM中,如果浏览器会这样做的话。通常,当您使用“.load()”来抓取内容片段来更新页面时,您的服务器应该响应一个页面,而不是整个页面。 jQuery处理允许在实际URL之后使用选择器的目的是让你删除一个页面的块,这真的很酷,但它有一个缺点,即在这种情况下不会执行脚本。

答案 1 :(得分:0)

因为它无法在<SCRIPT>标记内运行脚本。 jQuery只有.getScript()来调用脚本。 Check here