iphone webview和iframe问题

时间:2011-11-02 16:35:01

标签: javascript iphone iframe webview

我正在为iphone应用创建一个“web loader”。一个html文件与iphone应用程序捆绑在一起并加载到webview中。在webViewDidFinishLoad我使用stringByEvaluatingJavascriptFromString来执行创建iframe的javascript函数,等待它加载然后将其转换到屏幕上。似乎创建iframe的过程会导致webViewDidFinishLoad不断被一遍又一遍地调用。有没有人遇到过这个问题,或者有一个提示,以确定如何通过javascript创建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);
}

2 个答案:

答案 0 :(得分:0)

我不是真正使用原生iphone应用程序。但在正常页面中你可以做相反的事情。

加载iframe没有onload事件,并在加载文档的script末尾的body标记中,调用父级,如:

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

答案 1 :(得分:0)

我的问题是在javascript中创建的iframe导致第二个webViewDidFinishLoad方法被触发。我在这个方法中再次错误地调用了我的js函数,这会导致创建一个新的iframe并导致循环行为。我只是忽略了这个方法的第二次调用,一切都按预期工作。