AJAX不会覆盖已加载的脚本?

时间:2013-12-16 13:47:21

标签: javascript jquery html ajax jquery-ui

我正在使用jquery-ui-widget1.10.3的版本,该版本适用于加载了ajax的页面片段#1,但如果已加载片段#2,则会触发页面片段#2的错误 片段#1之后。

这很奇怪,因为即使我尝试使用1.10.3覆盖1.8.21当ajax加载片段#2(是的我意识到这是一个糟糕的黑客)时,使用小部件工厂的代码仍然尝试使用1.10.3,因此会导致错误。

请注意,在正常页面加载期间是一个问题,因为1.8.21位于我的ajax div id="ajax_content"之外,因此每次都会加载。

如何在ajax期间覆盖1.10.3

<html>
   <div id="ajax_content">
       Page fragment #1 content
      <script src="jquery-ui-widget.1.10.3.js"></script>
   </div
   <script src="jquery-ui-widget.1.8.21.js"></script>
</html>

VS

<html>
   <div id="ajax_content">
       Page fragment #2 content
       <script src="jquery-ui-widget.1.8.21.js"></script> 
       //having this script here or not has no effect if 1.10.3 was already loaded
   </div>
   <script src="jquery-ui-widget.1.8.21.js"></script>
</html>

1 个答案:

答案 0 :(得分:1)

版本的jquery-ui-widget 不起作用。相反,问题的原因是添加到div innerHTML的{​​{1}}的脚本将无法执行。

动态添加的脚本(可能是ajax请求的响应或使用js或jQuery动态添加到id="ajax_content")不会执行。根据@Kevin B的评论,不推荐也是如此。我通过以下两种解决方案中的任何一种解决了同样的问题:

  1. 最初加载整个脚本
  2. 使用头标记
  3. 加载新页面

    你可能不同意这里的第二个解决方案,说这个问题是关于作为ajax响应收到的脚本,而我建议你重新修改你的方法并使用单独的页面。由于各种原因,这可能不适合您的方案,但如果阻止您这样做的唯一原因是这会导致代码重复,那么您可以使用innerHTML之类的东西进行探索。