2011-03-31 383 views
4

我測試了一個nexous one(使用android 2.2編譯)顯示當通過window.location.href重定向頁面時,不會觸發shouldOverrideUrlLoading。 onPageFinished像往常一樣觸發。window.location.href javascript不會觸發shouldOverrideUrlLoading

任何人都可以建議如何攔截JavaScript頁面重定向? 任何其他方式來重定向頁面在JavaScript中,所以shouldOverrideUrlLoading被觸發? 這是shouldOverrideUrlLoading的錯誤嗎?

感謝,

回答

0

誰能告訴我如何截取的JavaScript重定向頁面?

修改Javascript以調用您通過addJavascriptInterface()注入WebView的某些對象的方法。

這是shouldOverrideUrlLoading的錯誤嗎?

可能。這當然是一個限制。

+0

這是一個錯誤,因爲如果你改變location.href,U不要從字面上加載一個URL。因此,通過覆蓋這個並處理所有事情,您應該能夠確定沒有其他URL加載。人們認爲WebView只能顯示他們自己的頁面。但考慮你想呈現遠程網站,並不要控制JavaScript的運行... – Nappy 2011-09-21 14:16:00

+0

@CommonsWare你能告訴我,當我加載視圖內部的div標籤..我只能使用一個index.html和加載其他文件數據到該索引文件的div標籤..在這種情況下,我如何獲得網址 – 2013-10-10 11:56:35

1

就我而言,在我的網頁中使用window.location = "http://xxx"時,事件shouldOverrideUrlLoading()未被觸發。

但是,如果我使用自定義url方案或協議如androidurl://,shouldOverrideUrlLoading()被激發。我的解決方法是要使用自定義的協議,並在shouldOverrideUrlLoading()方法中添加以下代碼:

if (url.startsWith("androidurl://")) { 
    url = url.replaceAll("androidurl://", "http://"); 
} 

這將改變自定義協議回http://協議,你可以從那裏處理正確的URL。

這適用於我。

0

也許你可以使用WebChromeClientonJsBeforeUnload()攔截你即將離開當前頁面的情況。覆蓋onJsBeforeUnload()並將標誌設置爲true

然後使用WebViewClientonLoadResource()攔截要加載的URL。如果國旗是true,可以做任何你想要的,例如打開另一個網址意圖;否則什麼都不做。

另外,記得要添加到您的HTML:

<script> window.onbeforeunload = function(){ 
    return "Leave?"; 
}; </script>