有没有办法在不刷新页面的情况下重新执行JS?
说我是否有父页面和内页。当调用内部页面时,它将通过ajax调用,替换父页面的内容。当用户点击回来时,我想将它们导航回父页面,而无需重新加载页面。但是,父页面UI依赖于javascript,所以在他们点击后,我想重新执行父页面的javascript。这可能吗?
编辑:这是一些代码。我将我的代码包装在一个函数中,但是你在哪里以及如何调用这个函数?
function executeGlobJs() {
alert("js reload success");
}
答案 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
}