-1

私は、ページの読み込みが完了した後、私はJavaScriptを注入していWebViewのを持って次のように(onpagefinished): page.js:android webviewでurlパラメータを解析する方法は?

if (window.page) { 
     return; // page has been loaded from somewhere, not to redefine it again 
    } 
var _$p = window.page = { 
      version: "0.1" 
     }; 
function Response(xhr) { 
     this.xhr = xhr; 
     this.status = xhr.status; 
    } 
    Response.prototype.getHeader = function(header) { 
     return this.xhr.getResponseHeader(header); 
    }; 
    Response.prototype.getBody = function() { 
     return this.xhr.responseText; 
    }; 

    function ajax(url, callback) { 
     //TODO support PUT method 
     var xhr = new XMLHttpRequest(); 
     xhr.open("GET", url, true); 
     xhr.onerror = function(e) { 
      callback.onerror(e); 
     }; 
     xhr.onreadystatechange = function(event) { 
      if (this.readyState != this.DONE || this.status == 0) { 
       return; 
      } 
      if (this.status != 200) { 
       var response = new Response(xhr); 
       callback.onfail(response); 
       return; 
      } 
      callback.onsuccess(this.responseText); 
     }; 
     xhr.send(); 
    }; 


    var rpc = { 
     type: ["SMALL", "LARGE"], 
     exec: function(call, type) {// "call" conform to JSON-RPC 2.0 
      //TODO differentiate POST/GET based on rpc.type.SMALL/LARGE 
      var param = encodeURIComponent(JSON.stringify(call)); 
      ajax("?_$p=" + param, { 
       onerror: function(e) { 
        //TODO use logging 
        alert("Error:"+e.toString()); 
       }, 
       onfail: function(response) { 
        //TODO use logging 
        alert("Failed:"+response.getBoby()); 
       }, 
       onsuccess: function(text) { 
        //TODO use logging 
        alert("Page success:"+text); 
       }, 
      }); 
     } 
    }; 
_$p.navigate = function(url, title) { 
      rpc.exec(// JSON-RPC 2.0 
       {method: "navigate", params: { 
        "url": url, 
        "title": title 
       }}, rpc.type.SMALL); 
     }; 

@Override 
        public void onPageFinished(WebView view, String url) { 
String jscontent = ""; 
         try{ 
          AssetManager manager = view.getContext().getAssets(); 
          InputStream is = manager.open("page.js"); 
          InputStreamReader isr = new InputStreamReader(is); 
          BufferedReader br = new BufferedReader(isr); 

          String line; 
          while ((line = br.readLine()) != null) { 
           jscontent += line; 

          } 
           is.close(); 
          } 
view.loadUrl("javascript:" + jscontent); 
} 

これは私が読んでいるjavascriptのページですjavascriptのnavigate関数のurlパラメータのjson値を解析するにはどうすればよいですか? jsonの例:{"method": "navigate"、 "params":{"url": "http://some.url"、 "title": "Some Url"}}。 また、webviewのshouldinterceptrequestメソッドで行うのが理想でしょうか?

ありがとうございます!

+0

申し訳ありませんが、私は本当にあなたがURLのjsonの価値を意味するものの下で、あなたが説明して気にしませんか? – sihao

+0

私のjavascriptで、あなたはjson:$ p.navigateを見ますか?そこからurlとtitleの値を取得して、それをローカルのネイティブ変数に渡したいと思います。 –

+0

rpcの仕組みについてはあまりよく分かりません。変数を取り出そうとしているだけなら、私の答えを試すことができます。 – sihao

答えて

-1

私は..あなたが達成しようとしているものをあまりにもわからないが、あなたの指定されたコードに基づいて

.... 

var _$p = window.page = { 
     version: "0.1" 
    }; 

//create variables to store your "local variables" 
var local_url = ""; 
var local_title = ""; 

function Response(xhr) { 
    this.xhr = xhr; 
    this.status = xhr.status; 
} 

.... 

_$p.navigate = function(url, title) { 
     rpc.exec(// JSON-RPC 2.0 
      {method: "navigate", params: { 
       "url": url, 
       "title": title 
      }}, rpc.type.SMALL); 

     //save your variables into your "local variables" 
     local_url = url; 
     local_title = title; 
}; 

注:変数は唯一の$ p.navigate後に利用できるようになりますが呼び出されます。それ以外の場合は、空の文字列になります。

+0

しかし、これらはjavascript変数です。 javascriptファイルを操作したり触れたりすることなく。ちょうどそれを読んで、どのように私はJSONObjectまたは何かのようなjavascriptのナビゲートパラメータからURLとタイトルを取得するために、javaのurlパラメータのJSON値を解析するのですか? –

+0

また、ここで私が達成しようとしている具体的なステップがあります。これは最後と5番目のステップであり、より明白になることを望みます:http://stackoverflow.com/questions/36454232/how-do-i-navigate- web-within-a-help-of-a-locally-imported-js-file –

+0

javascriptの外でlocal_urlをどのように渡すのですか?私はあまりにも動作するかもしれない私のローカルjavaパラメータにそれを渡すことができる場合。何か案は? –

関連する問題