2017-11-18 12 views
0

WebViewをロードする必要があり、divクラスに基づいてCSSを変更する必要があります。私の場合、innerClassにターゲットを設定する必要があります。私はdisplay:noneするinnerClassを設定するにはどうすればよいandroid WebViewでクラス名をターゲティングするにはどうすればよいですか?

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

:たとえば、私は、WebViewの中にこのコードを持っていますか?

はここMainActivity.javaに私のコードです:

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

MainActivity.javaなぜdownvote?私の質問を明確にしていますか? – Nere

答えて

1

は、次のようなJavaScriptコードを使用することができます

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

をそして、あなたはこれであなたの目標を達成することができます

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


ここに完全な例があります:

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> 
+0

ありがとうございます...しかし、仕事していません... huhu – Nere

+0

アラートも働いていません.. – Nere

+0

あなたを混乱させて申し訳ありません。私はコードを編集し、このコードをテストしました。 –

関連する問題