@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceStatus){
View view = inflater.inflate(R.layout.fwebview, container, false);
webView = (WebView) view.findViewById(R.id.webView);
String url = getArguments().getString("link");
// Enable Javascript
webView.getSettings().setJavaScriptEnabled(true);
//set the WebViewClient before calling loadUrl
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
webView.loadUrl("javascript:var con = document.getElementByClassName('page-header'); " +
"con.parentNode.removeChild(con); ");
}
});
webView.loadUrl(url);
return view;
}
这段代码是我写的。它从另一个 Fragment 获取 URL。对于这个问题来说没关系。我尝试了各种 JavaScript 代码来从网页 www.ad.nl 中删除标题,但它似乎不起作用。该页面上的页眉的类是 page-header。除此之外,像 \"page-header\"
这样的转义函数是行不通的。
谁能帮我解决这个问题吗?
最佳答案
我对此的看法是这样的
String js = "javascript:"
+ "function () {"
+ " var element = document.getElementsByClassName('page-header');"
+ " element[0].parentNode.remove(element[0]);"
+ "} ();";
然后如果可能的话我可能会使用evaluateJavascript
以避免不必要的页面加载,如下所示:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript(js, null);
} else {
webView.loadUrl(js);
}
}
});
请注意,这仅处理它遇到的第一个page-header
,如果丢失就会中断,但想法应该很清晰。
关于javascript - 从网页 Java 中删除部分网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767900/