java - 如何在 android WebView 中定位类名?

标签 java android css webview

我需要加载 WebView 并需要修改基于 div 类的 CSS,在我的例子中我需要定位到 innerClass。例如我在 WebView 中有这段代码:

<div class="myClass">
  <div class="innerClass">
     Some Text here.
  </div>
</div>

如何将 innerClass 设置为 display:none

这是我在 MainActivity.java 中的代码:

final WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("https://xxxx.com");

最佳答案

您可以像这样使用 javascript 代码:

mWebView.setWebChromeClient(new WebChromeClient()); // for alert
mWebView.loadUrl("javascript:alert('hello world')");

你可以通过这个实现你的目标:

mWebView.loadUrl("javascript:document.getElementsByClassName('innerClass')[0].style.display = 'none'");


这是完整的例子:

主 Activity .java

public class MainActivity extends Activity {

    private WebView mWebView;
    private boolean isVisible = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.activity_main_webview);
        mWebView.setWebViewClient(new WebViewClient());
        mWebView.setWebChromeClient(new WebChromeClient()); // for alert, anyway.

        // Enable Javascript
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        String htmlString = "<html><div class=\"myClass\">\n" +
                "myClass text here" +
                "  <div class=\"innerClass\">\n" +
                "     Some Text here.\n" +
                "  </div>\n" +
                "</div>" +
                "</html>";

        mWebView.loadData(htmlString, "text/html; charset=utf-8", null);

        mWebView.loadUrl("javascript:alert('hello world')");
    }

    public void toggle(View view) {
        if (isVisible) {
            mWebView.loadUrl("javascript:var d = document.getElementsByClassName('innerClass')[0]; d.setAttribute(\"style\",\"display:none;\");");
        } else {
            mWebView.loadUrl("javascript:var d = document.getElementsByClassName('innerClass')[0]; d.setAttribute(\"style\",\"display:visible;\");");
        }
        isVisible = !isVisible;
    }
}

activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="runJavascript"
        android:text="Click"/>

    <WebView
        android:id="@+id/activity_main_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

关于java - 如何在 android WebView 中定位类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47362625/

相关文章:

javascript - 如何更改 javascript 中 &lt;input&gt; 标签的文本值

java - 如何将文件从一个安卓模拟器传输到我的安卓设备?

java - 如何将汉宁函数应用于我的音频样本?

Java Eclipse <终止,退出值 : -1073740791>

android - 在 View 上添加多个手势,不起作用

jquery - CSS3 动画不工作 Firefox

Java 泛型 - 类型转换问题

android - AOSP AndroidManifest.xml

java - 当我单击“运行”时,Android Studio 模拟器未运行我的应用程序

css - GWT 列表框样式