【问题标题】:iphone webview and iframe issuesiphone webview 和 iframe 问题
【发布时间】:2011-12-20 11:59:45
【问题描述】:

我正在为一个 iphone 应用程序创建一个“网络加载程序”。一个 html 文件与 iphone 应用程序捆绑在一起并加载到 web 视图中。在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);
}

【问题讨论】:

    标签: javascript iphone iframe webview


    【解决方案1】:

    我并没有真正使用原生 iphone 应用程序。但在普通页面中,您可以做相反的事情。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-06
        • 2012-02-21
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多