基本上我想做的事情是这样的:
window.location.href = "some_location";
window.onload = function() {
alert("I'm the new location and I'm loaded!");
};
加载窗口的新位置时有没有办法进行回调?(上面的代码不起作用。)
基本上我想做的事情是这样的:
window.location.href = "some_location";
window.onload = function() {
alert("I'm the new location and I'm loaded!");
};
加载窗口的新位置时有没有办法进行回调?(上面的代码不起作用。)
不,你不能按照你想要的方式去做。加载新页面会关闭当前文档并开始加载新文档。当新页面开始加载时,当前文档中的任何代码都将不再有效。
要在新文档加载时拥有事件处理程序,您需要将代码插入到新页面的文档中,或者将新文档加载到 iframe 中并监控当前文档中 iframe 的加载。
将 window.location.href 设置为新值会告诉浏览器直接转到下一页。
像这样:
window.location.href = "http://www.google.com/";
一旦浏览器访问 google.com,就是这样,您的 Javascript 将不再执行,并且您无法进行任何类型的回调,因为浏览器不再运行您的页面。
所以,答案是否定的。
关于新上下文中的回调和 js 执行 - 否(根据原始答案),但有一些方法可以在没有回调的情况下访问加载的元素。例如scrollIntoView
,在加载的元素上,您可以附加选择器:
const href = '#someElem'
if(window.location.pathname !== '/') window.location.href = `/${href}`
else document.querySelector(href).scrollIntoView()