我正在为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);
}
答案 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并导致循环行为。我只是忽略了这个方法的第二次调用,一切都按预期工作。