设置用 window.open() 打开的空白页的哈希值
Set hash of blank page opened with window.open()
我有一个使用 javascript 的 window.open();
函数动态创建的页面。这将打开一个新的 window,URL 为 about:blank
,然后我将其余代码注入页面。我正在尝试检测用户是否刷新页面,然后在稍后的脚本中告诉打开器任务已完成(因此为什么这个页面不是静态页面,它需要与另一个打开的选项卡通信)
问题是,似乎没有在 URL 的末尾设置散列。我什至不确定是否可以这样做,因为它不是实际的 URL。
if (document.location.hash=="#one") {
alert('Good Job!')
} else {
document.onunload=function() {
window.location.href = window.location.href+encodeURIComponent("#one");
}
}
我曾使用过 encodeURIComponent()
,因为我曾在某处听说,在非字母数字的情况下这样做是一种很好的做法。我不确定这是否是问题所在,或者我是否应该使用 href=#one
但似乎都不起作用。
有什么解决办法吗?
encodeURIComponent
将 URL 中具有特殊含义的字符(例如 #
)转换为 没有 的编码版本特殊含义,所以这就是问题所在(因为你需要特殊含义"starts the fragment identifier")。
one
没有特殊字符,所以不需要编码。如果您正在接受输入并且您不知道它是否包含特殊字符,那么您将从编码中排除 #。
window.location.href + "#" + encodeURIComponent(some_string_here);
我有一个使用 javascript 的 window.open();
函数动态创建的页面。这将打开一个新的 window,URL 为 about:blank
,然后我将其余代码注入页面。我正在尝试检测用户是否刷新页面,然后在稍后的脚本中告诉打开器任务已完成(因此为什么这个页面不是静态页面,它需要与另一个打开的选项卡通信)
问题是,似乎没有在 URL 的末尾设置散列。我什至不确定是否可以这样做,因为它不是实际的 URL。
if (document.location.hash=="#one") {
alert('Good Job!')
} else {
document.onunload=function() {
window.location.href = window.location.href+encodeURIComponent("#one");
}
}
我曾使用过 encodeURIComponent()
,因为我曾在某处听说,在非字母数字的情况下这样做是一种很好的做法。我不确定这是否是问题所在,或者我是否应该使用 href=#one
但似乎都不起作用。
有什么解决办法吗?
encodeURIComponent
将 URL 中具有特殊含义的字符(例如 #
)转换为 没有 的编码版本特殊含义,所以这就是问题所在(因为你需要特殊含义"starts the fragment identifier")。
one
没有特殊字符,所以不需要编码。如果您正在接受输入并且您不知道它是否包含特殊字符,那么您将从编码中排除 #。
window.location.href + "#" + encodeURIComponent(some_string_here);