這看起來可能是一個奇怪的問題,但有沒有一種方法可以在不使瀏覽器控件導航的情況下重寫window.location?我遇到的問題是我在控件中注入了html代碼,而window.location是關於:blank - 在一些javascript代碼上導致錯誤。試圖讓他們覺得他們是在一個網址以外約:空白在Webbrowser控件上覆蓋window.location
回答
HTML5草案包括window.history.pushState
+ window.onpopstate
,但這不是三叉戟(MSHTML)的支持,並不允許跨多個域,請不要介意URL方案導航。一些JavaScript實現也支持用戶定義的getter和setter,所以你也許可以做window.__defineGetter__('location', function() { return fakeLocation })
,但是我相信我不會在IE的控制下工作。
迴應評論者:你在做什麼?
有點難以在公共論壇上解釋,但非常黑客控制顯示某些代碼,我想顯示和監控。問題是他們有JavaScript檢查window.location - 哪個中斷。當然,答案可能是不注入瀏覽器,導航到一個URL - 但我試圖避免這一點。 – timeitquery 2010-11-10 15:26:52
不起作用。'未處理的錯誤:__defineGetter__:無法修改不可配置的屬性' – XP1 2013-12-13 06:08:06
不可能取代window.location
屬性。 window.location
是一個不可配置的屬性,這意味着它不能被修改。
我可以使用的唯一混亂的解決方法是在執行腳本文本之前執行查找和替換(用空字符串替換window.location
行)。
我已經成功使用Object.defineProperty()當document.documentMode >= 9
(IE9 +)。
要獲得IE9 +模式WebBrowser控件,我第一次加載以下網址:
about:<!doctype html><meta http-equiv="X-UA-Compatible" content="IE=edge">
這給出了最新的文檔模式中的大部分是空文件。
然後重新定義window.location
,我通過EVAL執行一些腳本()或document.write()的:
Object.defineProperty(window, 'location', {value: {href: 'fubar'}});
的完整序列是這樣的:
- 負載控制。
- 等待
WebBrowser.ReadyState == 4
或DocumentComplete
事件。 - 致電
document.open()
(重要)。 - 評估或編寫腳本重新定義位置。
- 編寫HTML內容。
- 致電
document.close()
(確保onload被調用)。
注意:我使用ActiveX WebBrowser控件,而不是.NET控件的封裝。它可能會在.NET中工作。
- 1. WebBrowser控件:如何覆蓋URL屬性
- 2. 覆蓋webBrowser單擊事件
- 3. WebBrowser控件c上的透明覆蓋圖#
- 4. 在Webbrowser控件中使用IInternetSecurityManager覆蓋IE隱私設置
- 5. 如何在Firefox中覆蓋window.location?
- 6. 在DirectX內容上覆蓋WinForms控件
- 7. wpf webbrowser控件和谷歌地圖,覆蓋灰色圖像
- 8. 覆蓋WPF應用程序中的WebBrowser控件?
- 9. ToolStrip覆蓋控件
- 10. 覆蓋WPF控件
- 11. 覆蓋WPF控件
- 12. 無法覆蓋window.location的setter&getter
- 13. 覆蓋Telerik控件的Javascript?
- 14. WPF控件OnRender覆蓋
- 15. 覆蓋FormView控件模板
- 16. 覆蓋兩個控件
- 17. Silverlight用戶控件覆蓋
- 18. 覆蓋畫布覆蓋在畫布上
- 19. 在WPF WebBrowser控件
- 20. 覆蓋在C#中繪製控件
- 21. 在控件中覆蓋〜行爲
- 22. 在控件擴展中,覆蓋或addHandler?
- 23. 在winforms中創建覆蓋控件
- 24. 覆蓋文件上傳控件的上傳功能
- 25. 在Windows Phone 7上滾動WebBrowser控件
- 26. WebBrowser控件在Vista上失敗
- 27. 如何覆蓋右鍵單擊winforms WebBrowser控件時出現的ContextMenu?
- 28. 控制器覆蓋在Magento
- 29. 覆蓋樣式中的visualstate而不覆蓋控件模板
- 30. Wpf控制覆蓋?
顯示一些來源。 – zzzzBov 2010-11-09 21:07:33
你想完成什麼? – Matt 2010-11-09 21:47:41