设置用 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);