2011-11-02 44 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>