2011-11-02 99 views
3

我正在爲iphone應用程序創建一個「web加載程序」。 HTML文件與iphone應用捆綁在一起並加載到webview中。在webViewDidFinishLoad我使用stringByEvaluatingJavascriptFromString來執行一個JavaScript函數來創建一個iframe,等待它加載,然後將其轉換到屏幕上。看起來創建iframe的過程導致webViewDidFinishLoad不斷地被反覆調用。有沒有人遇到過這個問題或有一個小竅門,以確定如何通過JavaScript創建一個iframe而不觸發這個錯誤?iphone webview和iframe問題

HTML文件JS代碼看起來像這樣:

var ifrm; 

function load(url) { 
ifrm = document.createElement("IFRAME"); 
ifrm.setAttribute("src", url); 
ifrm.style.width = "100%"; 
ifrm.style.height = "100%"; 
ifrm.style.display = "none"; 
ifrm.onload = function() { 
    document.getElementById('loading').style.display = 'none'; 
    ifrm.style.display = ''; 
} 
document.body.appendChild(ifrm); 
} 

回答

0

我的問題是,在JavaScript創建的iframe中導致第二個webViewDidFinishLoad方法觸發。我在這個方法中再次錯誤地調用了我的js函數,這會導致創建一個新的iframe並導致循環行爲。我簡單地忽略了這個方法的第二次調用,並且一切按預期工作。

0

我不是一個真正的原生iPhone應用程序。但在正常頁面中,您可以做相反的事情。

裝入iframe沒有onload事件,並在加載的文件body結束一個script標籤,調用父,如:

<body> 
    ... 
    <script> 
    //the document is loaded 
    //call a function in the parent page 
    parent.appObj.iframeLoadedCallback(window); 
    </script> 
</body>