Есть несколько вещей, которые нужно сделать в вашем приложении:
Используйте setJavaScriptCanOpenWindowsAutomatically
, как @ajpolt говорит. Это позволит не допустить window.open
.
Включить setSupportMultipleWindows
. Это заставляет WebView фактически пытаться открыть новое окно. В противном случае он откроет URL-адрес в том же WebView.
Подключиться к WebChromeClient.onCreateWindow
Обратный вызов и создать новый экземпляр WebView
. Для этого нового экземпляра вам необходимо установить WebViewClient
, который запустит намерение с shouldOverrideUrlLoading
.
Ниже приведен пример кода:
WebView webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setSupportMultipleWindows(true);
webView.setWebChromeClient(new ChromeClient());
И это ChromeClient
:
class ChromeClient extends WebChromeClient {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
WebView tempWebView = new WebView(MainActivity.this);
tempWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
browserIntent.addCategory(Intent.CATEGORY_BROWSABLE);
startActivity(browserIntent);
return true;
}
});
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(tempWebView);
resultMsg.sendToTarget();
return true;
}
}
вы можете запустить JavaScript на WebView как этот view.loadUrl ("JavaScript: $ ('.CARS_panelTitle ') CSS (' дисплей', 'ни'). "); с использованием Webclient – 3xplore