Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在背面重新执行js,而不重新加载整个页面_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 在背面重新执行js,而不重新加载整个页面

Javascript 在背面重新执行js,而不重新加载整个页面,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,有没有办法在不刷新页面的情况下重新执行JS 假设我有一个父页面和一个内部页面。当调用内部页面时,将通过ajax调用它,替换父页面的内容。当用户单击“上一步”时,我希望将它们导航回父页面,而无需重新加载页面。但是,父页面UI依赖于javascript,所以在他们单击后退后,我想重新执行父页面的javascript。这可能吗 编辑:以下是一些代码。我将代码封装在一个函数中,但您将在何处以及如何调用此函数 function executeGlobJs() { alert("js reload s

有没有办法在不刷新页面的情况下重新执行JS

假设我有一个父页面和一个内部页面。当调用内部页面时,将通过ajax调用它,替换父页面的内容。当用户单击“上一步”时,我希望将它们导航回父页面,而无需重新加载页面。但是,父页面UI依赖于javascript,所以在他们单击后退后,我想重新执行父页面的javascript。这可能吗

编辑:以下是一些代码。我将代码封装在一个函数中,但您将在何处以及如何调用此函数

function executeGlobJs() {
   alert("js reload success");
}

您可以将所有javascript封装到一个函数中,并在页面加载时调用此函数。 最终,您可以控制重新执行整个javascript,而无需重新加载页面


当您使用任何concat实用程序(例如Gulp)时,这是常见的做法。

如果您想像重新加载页面一样重新加载脚本文件,请查看


对于所需的所有其他脚本函数,只需按照@s4n989和@Rudolf Manusadzhyan编写的那样创建一个包装函数。然后在需要重新加载页面时执行该函数。

我相信您正在寻找一个名为

.preventDefault();
这里有一个链接可以更好地解释它的作用-

希望这有帮助


编辑: 顺便说一下,如果您想在背面执行JS,可以将脚本包装在

$('.your-div').on('load', function(e) {
    e.preventDefault();
    //your JavaScript goes here
}

您可以使用html5历史api:

在您的
单击
-处理程序中,您将调用
pushState
-方法,stat存储当前状态供以后重用:

$(document).on('click', 'a.link', function () {
  // some ajax magic here to load the page content
  // plus something that replaces the content...  

  // execute your custom javascript stuff that should be called again
  executeGlobJs()

  // replace the browser-url to the new url
  // maybe a link where the user has clicked
  history.pushState(data, title, url);
})
…稍后,如果用户返回浏览:

$(window).on('popstate', function () {
  // the user has navigated back,
  // load the content again (either via ajax or from an cache-object)
  // execute your custom stuff here...
  executeGlobJs()
})
这是一个非常简单的例子,当然并不完美! 您应该在此处了解更多信息:

对于ajax和DOM相关的部分,您应该了解一些jQuery。(都是关于神奇的美元符号)


另一个选项是
hashchange
-事件,如果您必须支持较旧的浏览器…

您能给我们一些代码吗?您希望整个JS(也包含在包含的文件中)在页面上,或者只是其中的一部分?使用函数,Luke=)可能所有JS。因为我在一个单独的文件中有js插件,我也需要重新执行。我目前正在尝试将我的js包装在一个函数中的方法。但是,当用户返回时,我在哪里&如何调用该函数来触发它呢?请显示代码。我将在何处/如何调用该函数?作为我身体中的内联js?在哪里/如何调用该函数?作为我身体中的内联js?调用函数可以在任何事件上,以下是我能想到的一些事件-在页面加载时作为body onload事件-在您想要获取上一页的任何按钮上单击-在鼠标单击或鼠标悬停时,下面是可以使用的事件列表-浏览器/设备对此解决方案的支持如何?有一个名为“caniuse”的网站来搜索此类问题;)仍在尝试不同的方法。当我完成时,我将标记一个完整的答案。谢谢。@user1389082好的,如果您有任何问题,请不要不好意思在这里问:)