javascript - 删除/重新加载已加载的脚本

标签 javascript ajax jquery

我正在通过 ajax 加载页面。整页包括<html> <head> <body> . 所以我需要调用所有应该在页面加载时调用的脚本。但是浏览器记住其中一些已经加载到这个窗口并且他不会再次执行它们。

如何删除所有加载的脚本?

或者更好的是,如何加载整个页面,但有一些旧对象在前一页的后台工作?例如上传和其他通信。

代码: this.load = function(adr) {
这个.iris();

    $.ajax({
          type: 'GET', 
          url:  adr,   
          dataType: 'html',
          success: function(data) 
          {    
            $("body").html(html);  
          }
    });

编辑: 对不起伙计们,我可能写错了,因为你的答案很好但解决了其他问题,我可以自己解决。所以我会尝试用不同的方式来讲述。

  • 我无法将初始化保存到函数或其他任何东西中

    为什么 - 因为我正在使用一些模板,每个模板的插件(用于表单,callendar..)文件中都有 JS。 每个插件在加载脚本时立即通过匿名函数初始化自身。

所以当我通过 ajax 加载 HTML 时,它不会在这个新的 HTML 上初始化。 (例如不会发现也不会添加监听器)。

最佳答案

当您执行脚本时,您无法取消执行它,即使您替换了整个 DOM,它也会保留在范围内。

因此,如果您创建一个对象 window.a = new A();并将 DOM 替换为 $('body').html(html); , 该对象仍可作为 window.a 访问.

更新:

我想您的脚本定义包含在 <head> 中您可以在一个地方调用它们。

<!DOCTYPE html>
<html>
<head>
  <script src="script1.js"></script>
  <script src="script2.js"></script>
</head>
<body>
  ... content ...

  <script>
window.onload = function () {
  // initialization code here
};
  </script>
</body>
</html>

放置初始化<script>在存储 function 时也在头部在一个变量中。然后,当您加载新内容时,仅替换 <body> 的内容并调用函数。

<!DOCTYPE html>
<html>
<head>
  <script src="script1.js"></script>
  <script src="script2.js"></script>

  <script>
var a = function () {
  // initialization code here
};

var load = function (adr) {
  $.ajax({
    type: 'GET', 
    url:  adr,   
    dataType: 'html',
    success: function (data) {
      data = data.exec(/<body[^>]*?>(.*)<\/body>/i);
      $("body").html(data);

      a(); // call the function after each load
    }
  });
};
  </script>
</head>
<body onload="a()">
  ... content ...
</body>
</html>

关于javascript - 删除/重新加载已加载的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9217812/

相关文章:

javascript - php在目录中创建文件

c# - 使用准无服务器 Web 架构(AJAX 模板魔法)确保安全 "private site areas"

javascript - 防止ionRangeSlider在鼠标移出后改变值

如果元素存在,Jquery insertAfter 仅一次

javascript - 为什么它被点击了两次?

javascript - Firebase 实时数据库 - o​​rderByChild 不返回任何结果

javascript - 使用 post 方法到 firebase 数据库的无效或意外 token

javascript - Angular 5 复选框从数据中选中状态

javascript - 遍历表行并禁用第二列中的输入

jquery - 使用 jQuery 在 Google App Engine 中提交 Ajax 表单