2016-02-02 41 views
0

是否有可能以某種方式破解window.location.replace的行爲,以激發JavaScript函數(比如alert)而不是讓用戶轉到新的位置?黑客window.location.replace的行爲,使用javascript而不是URL

我給你的例子,假設我們有這樣的功能:

setTimeout(function(){ window.location.replace("#SOMETHING_HERE#"); }, 900); 

這就會引發上的特定按鈕用戶點擊; #SOMETHING_HERE#是一個佔位符,管理員可以通過配置面板放置一個URL。

現在,我們都知道客戶很奇怪,我剛纔問我找到一種方法來激發JavaScript而不是重定向用戶,好吧,我被卡住了。當然,我應該修改綁定到按鈕的功能,但實際上我無法訪問代碼,唯一的入口點是我之前提到的面板,我只能更改#SOMETHING_HERE#的值。 有人有一些線索,我可以如何發出警報(「foo」); ?這在某種程度上可能嗎?

答案也可能是「否」,我只是說他們必須找到一種方法來更改該代碼。

+4

如果其驗證是蹩腳的,嘗試'「);警報(」 whatever' – alex

+1

https://en.wikipedia.org/wiki/Bookmarklet – Kaiido

+0

客戶端是不是因爲我不t,所以很奇怪Hink客戶會要求你在第一時間使用ocation.replace。爲什麼不能調用location.replace有條件的? – gurvinder372

回答

8

您可以javascript:前綴的字符串:

setTimeout(function(){ window.location.replace("javascript:alert('hello world!')"); }, 900); 

這工作,因爲對於location.replace規範在definition for "navigate"結束了,它說:

  • 如有必要,這是嘗試獲取資源的步驟。跳轉到第一個相應的子步驟:
  • ...

    如果新資源是其URL方案是JavaScript的

    隊列來運行這些「的javascript:URL」任務的步驟,與相關瀏覽器上下文的活動文檔被導航:

    +0

    這是完美的,真的非常感謝,也爲信息! –