设置使用 window.open() 打开的空白页的哈希值

Set hash of blank page opened with window.open()

本文关键字:空白 哈希值 window open 设置      更新时间:2023-09-26

我有一个使用 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);