2012-07-20 208 views
0

UIWebView成功加載內容,但不顯示它。 UIWebView只是白色的屏幕。但是,如果你點擊這個UIWebView它會處理你的點擊。例如,如果您點擊鏈接應該在的地方(但實際上是空白處),點擊處理並下一頁加載並顯示OKUIWebView加載但不顯示內容

該錯誤是不穩定的。我只通過本地HTML文件(我們的主頁,它在本地生成)獲取它,網頁內容加載正常。它發生在20%的情況下。但在同一時間,它是非常粘性的。一旦得到白色屏幕,您可以多次重新加載此頁面,並看到白色屏幕(但是,如果您單擊隱形鏈接,另一個頁面顯示成功)。有時偶爾會出現沒有任何理由。你可以上下滾動這個空白屏幕,它偶爾會加載。這個本地HTML有很多東西,嵌入圖像,JavaScript等,它可能是JavaScript的問題,但我不能解釋它是如何可能的,該內容隱形,但仍然可點擊。

它發生在iPod真正的設備和iPhone模擬器4.3,但不能在iPad或iPad模擬器上重現它。

我花了一整天的時間來解決這個問題。有任何想法嗎?

回答

0

我解決了這個問題!

UIWebView的這種非常奇怪的行爲是由javascript代碼引起的。 javascript是(簡體):

<script> 

    function onLoad() { 
     location.href='xxx://pageLoaded'; 
    } 

    </script> 

<body onload='onLoad();'> 

此代碼的想法是通知應用程序關於頁面加載的事實。在應用程序中,我向xxx:// pageLoaded發送請求並取消它(在shouldStartLoadWithRequest中)。因爲要求取消,我沒有想到這裏有任何問題。特別是,我沒有想到內容會變得不可見,但仍然存在。我添加了計時器(setTimeoutonload火災和location.href更改。它解決了這個問題。

注:我知道webViewDidFinishLoad事件在UIWebView。這是一個非常簡單的例子,只是爲了解釋問題和解決方案。真正的JavaScript更復雜,它的功能無法通過簡單的使用webViewDidFinishLoad達到。