2017-03-19 10 views
0

私はAndroidにWebViewを持っています。私はURLからwebviewのページを読み込み、私は実際にWebページが持っているいくつかの要素を非表示にしたい。私はページがロードされた後にそれをしました。そして、それはwebviewの中で私に「none」のテキストだけを与えます。どのようにしてアンドロイドWebViewで要素の表示を動的に変更できますか?

@Override 
public void onPageFinished(WebView view, String url) { 
    view.loadUrl("javascript:window.document.getElementsByClassName('cdo-search')[0].style.display='none';"); 
    if (pd.isShowing()) { 
     pd.dismiss(); 
    } 
} 

がどのように我々は、Webページが実際に持っている要素を隠すことができ、次のように私が試しましたか?

+0

私は、Webビューは単にWebページを表示するために使用されると信じています。 Webページを動的にする必要がある場合は、.Asp、.php、.jspなどの別のWebテクノロジ、またはURLが要求されたときにページを動的に埋め込むために使用される他のJavaScriptテクノロジを使用する必要があります。 – Matt

+0

はい、文字列またはその他のヘルパーWebクライアントとしてデータを渡すことができます。最初のいくつかの段落では、WebViewの機能と意図されたユースケースについて説明します。 https://developer.android.com/reference/android/webkit/WebView.html – Matt

答えて

0

私の以前の答えはそうではありませんでした。テストの後、私はこれが問題を解決したことを知りました。問題はアンドロイドやwebviewではありません。それは、URLベースのjavascriptの実行方法です。

@Override 
public void onPageFinished(WebView view, String url) { 
    view.loadUrl("javascript:function a(){window.document.getElementsByClassName('cdo-search')[0].style.display='none';}; a()"); 
    if (pd.isShowing()) { 
     pd.dismiss(); 
    } 
} 

私は理由は何全くわからないが、私は推測していた場合、今までは未定義以外の形式で記述文によって返されたものを、文書のHTMLとして設定されます。

つまり、この形式でJSを実行している間は、外部スコープでの割り当て操作は一切できません。

私の試験方法:

私は、この特定のスタックオーバーフローページのアドレス・バーにこれら二つを入れました。 qustionが予想されるとしてではなく秒1で姿を消した最初の試みで、

javascript:window.document.getElementsByClassName('question-hyperlink')[0].style.display='none';

javascript:function a(){window.document.getElementsByClassName('question-hyperlink')[0].style.display='none';}; a()は、ページには、「なし」になりました。

+0

動作しませんでした:( – OmerFaruk

+0

答えを編集しました。これで問題が解決したかどうか確認できますか –

関連する問題