2016-02-19 251 views
0

我有一個使用javascript的window.open();函數動態製作的頁面。這將打開一個URL爲about:blank的新窗口,然後我將其餘代碼注入頁面。我試圖檢測用戶是否刷新頁面,然後在稍後的腳本中告訴開罐器該任務已完成(因此,爲什麼此頁面不是靜態的,它需要與另一個打開的選項卡進行通信)設置使用window.open打開的空白頁的哈希()

問題是,似乎並沒有在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,但似乎都不起作用。

任何解決方案?

回答

0

encodeURIComponent轉換有特殊含義的字符的URL(如#)來編碼版本的有特殊的意義,所以這是問題(因爲你需要的特殊含義「開始片段標識符」 )。

one沒有特殊字符,所以不需要編碼。如果你正在接受輸入並且你不知道它是否包含特殊字符,那麼你會從編碼中排除#。

window.location.href + "#" + encodeURIComponent(some_string_here);