我正在开发一个liferay 7主题,并且我在我的主菜单上绑定了一些JS。 我所有的 js 都在 document.rdy 事件中。 但我看到的是,当我更改页面时,没有触发 document.ready(),并且菜单上的所有 js 绑定都丢失了。
我该怎么办?
我也经历过。如果您不需要 liferay 站点成为单页应用程序,请在 Portal-ext.properties 中关闭该功能:
javascript.single.page.application.enabled = false
然后重新启动。
不要使用
$(document).ready()
,而是使用 AUI().ready()
。
Liferay 7 使用 SennaJS (SPA),因此加载页面时不会触发 $(document).ready()
(窗口重新加载时除外)。
参见: https://portal.liferay.dev/docs/7-0/tutorials/-/knowledge_base/t/automatic-single-page-applications
您正在寻找基于 Liferay 应用程序的 SPA 的
Liferay.on("endNavigate")
生命周期事件。将您的文档就绪代码更改为如下所示:
$(document).ready(function() {
function init() {
console.log("Page loaded");
// bind your events here.
}
init();
Liferay.on("endNavigate", init);
});
当您从一个页面导航到另一页面时,将调用 init
。