Android WebView에서 페이지 DOM을 수정해야합니다 (ID 또는 클래스 이름을 사용하여 일부 요소를 숨기고 함수 또는 CSS 스타일에 대한 기본 impls 대체). 나는 WebViewClient.onPageLoaded
에서 자바 스크립트를 주입 시도했다 :Android WebView에서 DOM을 수정하는 방법은 무엇입니까?
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
getSupportActionBar().setTitle("Finishing ");
getSupportActionBar().setSubtitle(url);
view.loadUrl("javascript:alert('hello world 2');");
getSupportActionBar().setTitle("Finished");
}
});
(실제로 숨기는 대신 여기 JS에서 경고를 표시). 이것은로드되지 않은 동안 모든 페이지가 표시되기 때문에 실제로 원하는 것은 아닙니다. onPageStarted
에서 어떤 이유로 JS 로딩
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
getSupportActionBar().setTitle("Started ");
getSupportActionBar().setSubtitle(url);
webView.evaluateJavascript("alert('hello world 1');", null);
// view.loadUrl("javascript:alert('hello world 1');") prevents too
}
가로드 전에 JS 에게 페이지의 시작을 주입하는 것이 가능한가를? WebView
에 DOM 이벤트에 대한 콜백을 갖는 모든 트릭이 있습니까?
이것은 해결책 일 수 있지만 원본 페이지의 스크립트 때문에 가끔 작동하지 않을 수 있습니다. 제대로하려면 내가 HTML을 구문 분석하고 내 스크립트를 실행하고 원본 페이지의 스크립트를 실행하고 꽤 어렵습니다 스크립트 체인을 만들어야합니다. BTW. 실제 목표는 엘리먼트를 숨기지 않고 래퍼를 생성하거나 CSS를 수정하여 요소를 보이지 않게하는 것입니다. – 4ntoine