Intereting Posts
Ошибка Android Studio Rendering с интерактивными материалами Каков правильный способ обработки жизненного цикла Activity с помощью OpenGL Android OpenGL текстуры выглядят ужасно на Sprint Samsung Galaxy s2 Epic Touch 4g Изменение Просмотр содержимого в активности динамически Какова высота по умолчанию для андроидов TabLayout Android – Невозможно создать экземпляр активности – Класс не найден исключение после обновления до ADT 22 Сепаратор (разделитель) после последнего элемента списка ListView Android: получить Viewgroup с точки зрения? Android – пустой список в представлении «Пользовательский список» Как передать параметры в Android Intent в новой схеме на хром? Firebase Android офлайн ActionBar setIcon с Font-Awesome Прокручиваемый BarChart с возможностью касаться каждого бара с помощью MpAndroidChart? Inflating AppBarLayout с помощью панели инструментов + TabLayout Размер шрифта пользовательского предпочтения больше, чем стандартное предпочтение в android 5

Программный щелчок в Android WebView

Добрый день!

У меня есть сайт с href в нем, который перенаправил меня на https

<a id="mA" href="javascript:pLogin(2)" class="login-link__link private-cab-link"><i class="icon-user"></i>Авторизация</a> 

Итак, я могу щелкнуть по нему javascript. Он работает в хромированной консоли

 javascript:(function(){document.getElementById('mA').click();})() 

Теперь я пытаюсь сделать то же самое в WebView, нажав кнопку моего приложения.

 public class RostelecomLoginActivity extends Activity { WebView webView; String url; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.activity_rostelecom_login); Intent webIntent = getIntent(); String url = webIntent.getStringExtra("url"); webView = (WebView) findViewById(R.id.webView1); webView.setWebViewClient(new MeWebViewClient()); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setSaveFormData(true); webView.getSettings().setSavePassword(true); webView.loadUrl(url); Button buttoner = (Button) findViewById(R.id.button1); buttoner.setOnClickListener(new OnClickListener() { public void onClick(View v) { webView.loadUrl("javascript:(function(){document.getElementById('mA').click();})()"); } }); } 

}

Я использую MyWebViewClient, чтобы разрешить все сертификаты

 public class MeWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } 

}

Инъекция js не работает. Если я нажимаю на href в WebView, он работает. Что может быть неправильным? Благодарю.

Click () не реализован в интерфейсе android js, вы должны использовать объект события DOM HTML, например:

 webView.loadUrl("javascript:(function(){"+ "l=document.getElementById('mA');"+ "e=document.createEvent('HTMLEvents');"+ "e.initEvent('click',true,true);"+ "l.dispatchEvent(e);"+ "})()"); 

Вам нужно будет добавить javaScript-интерфейс в WebView для вызова функции JavaScript из кода android.

Попробуйте что-то вроде этого:

  Button buttoner = (Button) findViewById(R.id.button1); buttoner.setOnClickListener(new OnClickListener() { public void onClick(View v) { JavascriptInterface javasriptInterface = new JavascriptInterface(RostelecomLoginActivity.this); webView.addJavascriptInterface(javasriptInterface, "MyInterface"); webView.loadUrl("javascript:(function(){document.getElementById('mA').click();})()"); } });