2017-09-29 5 views
0

最初の部分はうまくいきます。つまり、WKWebviewオブジェクトはJavaスクリプト関数を呼び出すことができます。問題はjavascriptコードにあると思います。evaluateJavaScript(..)でjavascript関数を呼び出して、アプリケーションバンドルのテキストファイルを読み取る

呼び出されるjavascript関数は、アプリケーションのバンドル内のテキストファイル(fileName = "data.txt")から単純に読み込まれることになっています。

function readTextFile(fileName) 
{ 
    var rawFile = new XMLHttpRequest(); 
    rawFile.onreadystatechange = function() 
    { 
     if(rawFile.status == 4) 
     { 
      document.getElementById("demo").innerHTML = this.responseText; 
     } 
    } 

    rawFile.open("GET",file,true) 
    rawFile.send() 

} 

出力は常に空です。今、私はrawFileのステータスが4に達したと確信しています。私はfileNameをいくつかの存在しないと思われるファイルに置き換えました。そしてrawfileの状態はまだ4に達しています。だから私はファイルが見つかったのかどうかも分かりません。

  1. ファイルが見つかったかどうかを判断する方法はありますか?
  2. もし私がそれをどのように読むことができますか?

私は経験豊富なJavaスクリプト開発者ではありません。だから明らかな問題かもしれません。私がw3schools.comの助けを借りて書いたjavascript関数。

ありがとうございました。

答えて

1

あなたのコードにいくつかの書式設定の問題があり、イベントリスナーを追加していないと思います。以下を試してください。リクエストがasynchronあるので、それがリスナーを追加することは理にかなってMDN https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

+0

でより良いドキュメンテーションもあり、おかげで私はこれを実装する方法を知りませんでした。関数readTextfile()が呼び出されていないため、まだまだ機能していません。行方不明のものがあるかもしれません... – BCI

+0

テキストファイルがアプリケーションバンドルに置かれている場合、readTextFile関数は呼び出されません。テキストファイルがリモートWebサーバー上にある場合は、それが呼び出されます。私は最終的に、クロスオリジン要求がHTTPに対してのみサポートされているという問題があることを知りました。これはapperentlyセキュリティ上の制限のためです...私は回避策を探すしようとします... – BCI

関連する問題