2017-03-19 33 views
0

我在Android中有一個WebView。我從url的webview中加載頁面,我想隱藏一些網頁實際上有的元素。我在頁面加載完成後做了。它只給webview中的'none'文本。我試過如下如何在Android 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(); 
    } 
} 

我們怎樣才能隱藏網頁實際上有的元素?

+0

我相信網頁視圖只是用來顯示網頁。如果網頁需要動態顯示,則必須使用另一種Web技術,例如.Asp,.php,.jsp或其他用於在請求URL時動態填充頁面的JavaScript技術。 – Matt

+0

是的,您可以將數據作爲字符串或其他幫助程序Web客戶端傳遞。前幾個段落討論了WebView的功能和預期用例。 https://developer.android.com/reference/android/webkit/WebView.html – Matt

回答

0

我以前的回答不是它。經過測試,我發現這解決了這個問題。這個問題不適用於android或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(); 
    } 
} 

我不能完全肯定有什麼原因,但如果要我猜,什麼都被你不是undefined其它格式寫的語句返回,將被設置爲文檔的HTML。

換句話說,在這個格式中執行JS時,你不能在外部作用域中執行任何類型的賦值操作。

我的測試方法:

我在這個特殊的堆棧溢出頁面的地址欄將這兩種。

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

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

在第一次嘗試qustion消失預期,但在第二個

,頁面變成了「無」。

+0

它沒有工作:( – OmerFaruk

+0

我編輯了答案。你能確認這是否解決了你的問題 –