【问题标题】:Dynamically change HTML element in android webView动态更改 android webView 中的 HTML 元素
【发布时间】:2015-09-16 07:07:51
【问题描述】:

我知道这个问题很常见,可以使用 here - JS 或 JQuery 和 here - 如何在 Android 上运行来解决。好吧,这些方法工作正常,但是当我们调用时:

`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'");

这里我什么也没有得到,只是空屏...

【问题讨论】:

  • 你是如何解决这个问题的?你能得到你想要的吗?我有同样的问题
  • 看看@arun 的回答——它正在工作

标签: javascript android jquery android-webview


【解决方案1】:

这不是重新加载页面。

"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@mail.com";
            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>

【讨论】:

  • 难以置信! +1。 hack 有什么参考资料吗?
  • 完美答案,我浪费了这么多时间才找到这个!谢谢:)
  • 顺便说一句,javascript 也可以通过 'webView.evaluateJavascript()' 方法轻松注入。示例:webView.evaluateJavascript("$('#my_div').remove();$('#another_div').remove();", null);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 2021-10-30
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多