我有一个使用 javascript 的 window.open();
函数动态制作的页面。这将打开一个 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中具有特殊含义的字符(例如#
)转换为不具有该特殊含义的编码版本,因此这就是问题所在(因为您需要特殊含义"启动片段标识符")。
one
没有特殊字符,因此不需要编码。如果您正在接受输入并且不知道它是否包含特殊字符,那么您将从编码中排除 #。
window.location.href + "#" + encodeURIComponent(some_string_here);