当 url 哈希更改时,刷新用 window.open 打开的打开的 window
Refresh an open window that was opened with window.open when the url hash changes
我使用 window.open(...)
打开一个小的弹出式参考 window 并给它命名。当为那个 window 调用后续 window.open
时,它会被正确地重用。
function openHelp(hash) {
var helpWindow = window.open(location.protocol + "/help.aspx" + (hash ? "#" + hash : ""), "helpWindow", "width=750, height=600, resizable=1, scrollbars=1, location=0, directories=0, status=no, menubar=no, toolbar=no");
}
它无法正常工作的一种情况是,有人在帮助页面 url 上打开了 window,但只有哈希发生变化(即 #jump-to-me
)。只有在页面重新加载时,页面才会正确地进入哈希。
有没有办法找到打开的 window,检查 URL 是否与我们尝试打开的内容匹配,并在哈希更改时有条件地执行 window.location.refresh()
?
如果我做对了,这会让你入门。
var extraWindow;
function makeWindow(){
extraWindow= window.open(/* .. */);
}
// this will reload the extra window that you just opened.
function reloadWindow(){
if(extraWindow){
extraWindow.location.reload();
}
}
makeWindow();
// reload the window when the hash changes or possibly change the page url based on this.
window.addEventListener("hashchange", reloadWindow, false);
我希望这能提供一个好的答案。
快完成了,只需要在 window 上为 hashchange
事件添加一个事件侦听器。
function openHelp(hash) {
var helpWindow = window.open(location.protocol + "/help.aspx" + (hash ? "#" + hash : ""), "helpWindow", "width=750, height=600, resizable=1, scrollbars=1, location=0, directories=0, status=no, menubar=no, toolbar=no");
helpWindow.addEventListener("hashchange", function () { this.location.reload() }, false);
}
我使用 window.open(...)
打开一个小的弹出式参考 window 并给它命名。当为那个 window 调用后续 window.open
时,它会被正确地重用。
function openHelp(hash) {
var helpWindow = window.open(location.protocol + "/help.aspx" + (hash ? "#" + hash : ""), "helpWindow", "width=750, height=600, resizable=1, scrollbars=1, location=0, directories=0, status=no, menubar=no, toolbar=no");
}
它无法正常工作的一种情况是,有人在帮助页面 url 上打开了 window,但只有哈希发生变化(即 #jump-to-me
)。只有在页面重新加载时,页面才会正确地进入哈希。
有没有办法找到打开的 window,检查 URL 是否与我们尝试打开的内容匹配,并在哈希更改时有条件地执行 window.location.refresh()
?
如果我做对了,这会让你入门。
var extraWindow;
function makeWindow(){
extraWindow= window.open(/* .. */);
}
// this will reload the extra window that you just opened.
function reloadWindow(){
if(extraWindow){
extraWindow.location.reload();
}
}
makeWindow();
// reload the window when the hash changes or possibly change the page url based on this.
window.addEventListener("hashchange", reloadWindow, false);
我希望这能提供一个好的答案。
快完成了,只需要在 window 上为 hashchange
事件添加一个事件侦听器。
function openHelp(hash) {
var helpWindow = window.open(location.protocol + "/help.aspx" + (hash ? "#" + hash : ""), "helpWindow", "width=750, height=600, resizable=1, scrollbars=1, location=0, directories=0, status=no, menubar=no, toolbar=no");
helpWindow.addEventListener("hashchange", function () { this.location.reload() }, false);
}