-1

Ben sayfa yüklenirken bittikten sonra javascript enjekte ediyorum bir web görüntülemesini var aşağıdaki gibi (onpagefinished): page.js:Android webview'da bir url parametresini nasıl ayrıştırırız?

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); 
} 

Bu Okuyorum JavaScript sayfası Javascript'te gezinme işlevi için url parametresinin json değerini nasıl ayrıştırırım. Json'un incelenmesi: {"method": "navigate", "params": {"url": "http://some.url", "title": "Some Url"}}.? Ayrıca, webview'in web tabanlı bir yöntemle yapılması gerekir mi?

Teşekkürler!

+0

Özür dilerim, URL'nin json değeriyle ne demek istediğini anlayamıyorum, açıklamayı mı düşünüyorsunuz? – sihao

+0

Benim javascript'imde json'u görüyorsun: $ p.navigate? Buradan URL ve başlık değerini almak ve yerel bir yerel değişkene ( –

+0

) aktarmak istiyorum, rpc'nin nasıl çalıştığından emin değilim. ama sadece değişkenleri çıkarmaya çalışıyorsanız, cevabımı deneyebilirsiniz. – sihao

cevap

-1

ben .. size ulaşmak için çalışıyoruz ne çok emin değilim ama verilen kod dayanarak

:

.... 

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; 
}; 

Not: değişkenler sadece $ p.navigate sonra kullanılabilir olacak denir. Aksi halde boş bir dize olacaktır.

+0

ancak bunlar javascript değişkenleridir. Javascript dosyasına dokunmadan veya dokunmadan. Sadece olduğu gibi, javascript JSONObject veya benzeri bir şey ile navigasyon parametresinden url ve başlık almak için javadaki url parametresinin json değerini nasıl ayrıştırırım? –

+0

Ayrıca, elde etmeye çalıştığım şeylerin ayrıntılı adımları, bu son ve 5. adımdır, umarım bunu daha açık hale getirir: http://stackoverflow.com/questions/36454232/how-do-i-navigate- yerel olarak-içe aktarılan-js dosyası –

+0

yardımı ile bir web-içinde-bir-içinde-the-of-the-the-yardım-of-the-yardım-on-bu-yerel-javascript dışında nasıl geçebilirim? Bunu dışarıda çalışabilecek yerel java parametresine de geçirebilirsem. herhangi bir fikir? –