在不重新加载整个页面的情况下重新执行js

时间:2016-02-12 07:00:41

标签: javascript jquery html ajax

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

说我是否有父页面和内页。当调用内部页面时,它将通过ajax调用,替换父页面的内容。当用户点击回来时,我想将它们导航回父页面,而无需重新加载页面。但是,父页面UI依赖于javascript,所以在他们点击后,我想重新执行父页面的javascript。这可能吗?

编辑:这是一些代码。我将我的代码包装在一个函数中,但是你在哪里以及如何调用这个函数?

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

4 个答案:

答案 0 :(得分:1)

您可以使用html5 history-api:

get_image() - 处理程序中,您将调用self.request - 方法,stat存储当前状态以供日后重用:

click

...稍后如果用户浏览:

pushState

这是一个非常简单的例子,当然不是完美的! 你应该在这里阅读更多相关信息:

对于ajax和DOM相关的部分,您应该学习一些关于jQuery http://api.jquery.com/jquery.ajax/的知识。 (这完全是关于神奇的美元符号)

另一个选项是$(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); }) - 事件,如果您支持旧浏览器...

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

对于所需的所有其他脚本函数,只需创建一个包装函数@ s4n989和@Rudolf Manusadzhyan编写它。然后在需要重新启动页面时执行该功能。

答案 3 :(得分:-1)

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

的功能
.preventDefault();

这是一个更好地解释它的作用的链接 - https://api.jquery.com/event.preventdefault/

希望这有帮助!

编辑:

顺便说一下,如果你想在后面执行JS,你可以将脚本包装在

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