ホーム

wkwebviewの中でfor文が動かなかった - Javascript

説明と結論

wkwebviewの中でjsが動かなくなりまして、その原因は、jsで書かれたループの場所で起こっていることが判明しました。配列の数だけループする処理をjsで書いてたんです。ブラウザではちゃんと実行されるんですが、何故かwkwebviewの中では動かなかったんです。

詳しく説明すると、for文でループをするたびに、document.createElementimg要素を作って画面に描画するというものでした。ブラウザではちゃんとループした数だけimg要素が画面に出力されたのに、wkwebviewはだめ。最初は、domが完成した後にjsを実行すればいいかな?とか思ったんですが、だめでした。

答えは、ループの中にありました。ループするごとにimg要素を作って画面に描画されるわけですが、そのスピードについて来れなかったんですね。wkwebview。ブラウザは優秀ですが、wkwebviewは優秀ではないですね。

下記のようにして、一回ループするごとに、一旦ループ処理を止め、数秒後、またループのn回目を実行するようにすればいけました。

実装

var i = 1;                     //  set your counter to 1

function myLoop () {           //  create a loop function
   setTimeout(function () {    //  call a 3s setTimeout when the loop is called
      alert('hello');          //  your code here
      i++;                     //  increment the counter
      if (i < 10) {            //  if the counter < 10, call the loop function
         myLoop();             //  ..  again which will trigger another 
      }                        //  ..  setTimeout()
   }, 3000)
}

myLoop();     

参考

How do I add a delay in a JavaScript loop?

環境

  • swift
  • swift3
  • wkwebview
  • webview
  • js
  • javascript
  • for
Pocket
LinkedIn にシェア

エンジニアにおすすめできる本

Card image cap
リーダブルコード

より良いコードを書くためのシンプルで実践的なテクニック

Card image cap
Webを支える技術

HTTP,URI,HTML,そしてREST

Card image cap
誰でもPythonで作れる

儲かるAIとソフトウェアの作り方

Card image cap
プログラマが知るべき97のこと

現場で使える実践哲学のマスターピース

Card image cap
情熱プログラマー

時代を超えて。ソフトウェア開発者の幸せな生き方

Card image cap
アジャイルサムライ

プログラミング達人開発者への道

Card image cap
Rubyを作った男 まつもとゆきひろ

コードの世界 スーパー・プログラマになる14の思考法

ご提供 sponsor
 

Meee!(ミー)は、ビジネスからプライベート利用まで、個人のスキルを気軽に売り買いできるスキルマーケットです。カテゴリや居住地から、検索することが可能です。

 

ランゲージエクスチェンジは、ネイティブスピーカーと気軽にマッチングできる言語交換プラットフォームです。あなたの地元に住む外国人を探したり、留学や海外移住の前に、現地のネイティブスピーカーと繋がることもできます!

宣伝
 

りょすけトークchは、仕事や私生活をより豊にするYouTubeチャンネルです。文献(本、映画、論文)から役に立つ情報をまとめ、生涯にわたり役に立つ哲学をお届けしています。是非、チャンネル登録してみてね

-ホーム

Copyright© offブログ! , 2021 All Rights Reserved Powered by AFFINGER5.