проблемы с iphone webview и iframe - PullRequest
3 голосов
/ 02 ноября 2011

Я создаю «веб-загрузчик» для приложения iphone. HTML-файл связан с приложением iphone и загружен в веб-просмотр. В webViewDidFinishLoad я использую stringByEvaluatingJavascriptFromString для выполнения функции javascript, которая создает фрейм iframe, ожидает его загрузки и затем переносит его на экран. Кажется, процесс создания iframe заставляет webViewDidFinishLoad постоянно вызываться снова и снова. Кто-нибудь сталкивался с этой проблемой или есть совет, чтобы определить, как я могу создать iframe с помощью javascript, не вызывая эту ошибку?

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 голосов
/ 04 ноября 2011

Моя проблема заключалась в том, что iframe, созданный в javascript, вызывал запуск второго метода webViewDidFinishLoad.Я неправильно вызывал мою функцию js в этом методе, что привело бы к созданию нового iframe и к циклическому поведению.Я просто проигнорировал второй вызов этого метода, и все заработало как положено.

0 голосов
/ 02 ноября 2011

Я не совсем на родном приложении для iphone. Но на обычной странице вы можете сделать наоборот.

Загрузите событие iframe без onload и в теге script в конце body загруженного документа вызовите родительский элемент, например:

<body>
  ...
  <script>
    //the document is loaded
    //call a function in the parent page
    parent.appObj.iframeLoadedCallback(window);
  </script>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...