2015-09-16 74 views
5

我知道這個問題是很常見的,並且可以使用here來解決 - JS或jQuery和here - 如何在Android上運行它。嗯,這方法工作正常,但是當我們致電:動態更改HTML元素的android web視圖

`myWebView.loadUrl("javascript:document.body.innerHTML = document.body.innerHTML.replace('link1', 'link2')");` 

圖像鏈接1與鏈接2變化,圖像加載,但頁面重新啓動,因此,如果我在,我要開始結束...可以我只是實時將鏈接1更改爲鏈接2,以便不像真實瀏覽器那樣重新加載頁面?

,我嘗試也在我的html文件中設置ID,如:

<img src="https://link1.jpg" id="dm5kode"/> 

,並在Android上運行:

myWebView.loadUrl("javascript:document.getElementById('dm5kode').src = 'link2'");

這裏我不明白什麼是空洞的畫面.. 。

+0

你是怎麼解決這個問題?你能得到你想要的嗎?我有同樣的問題 –

+0

在@阿倫的答案 - 它的工作 – johny

回答

9

這不是重新加載頁面。

"javascript:(
     function() 
     { 
      document.body.innerHTML = document.body.innerHTML.replace('link1', 'link2') 
     })()" 

例如:

WebView wb; 
    wb = (WebView) findViewById(R.id.webView1); 
    wb.loadUrl("file:///android_asset/web1.html"); 
    wb.getSettings().setJavaScriptEnabled(true); 

    wb.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageFinished(WebView web, String url) { 
      // TODO Auto-generated method stub 
      String uname = "[email protected]"; 
      String pass = "******"; 
      /* 
      * web.loadUrl(
      * "javascript:(function(){document.getElementById('email').value='" 
      * + uname + 
      * "';document.getElementById('pass').value='" + 
      * pass + "';})()"); 
      */ 
      String link1 = "https://www.gstatic.com/webp/gallery3/1.png"; 
      String link2 = "https://www.gstatic.com/webp/gallery3/2.png"; 
      web.loadUrl("javascript:(function(){document.body.innerHTML = document.body.innerHTML.replace('" + link1+"', '" + link2+"')})()"); 
     } 
    }); 

web1.html

<!DOCTYPE html> 
    <html> 
    <head> 
     <title>dynamic Image</title> 
    </head> 

    <body> 

<img src="https://www.gstatic.com/webp/gallery3/1.png" id="dm5kode"/> 

</body> 
</html> 
+0

令人難以置信! +1。有沒有參考黑客? – Stan

+0

完美的答案,我浪費了很多時間,直到我找到了這個!謝謝:) – Alqueraf

+0

謝謝,它的作品Charms.you節省我的時間 – Shailesh