Intereting Posts
Набор дополнений для набора андроидов для экрана предпочтений Запуск Java-байт-кода на Android – Sun JVM поверх DalvikVM Как сделать перекрытие второго фрагмента на первом фрагменте, а фрагментарный переход FindViewById несколько раз VS глобальная переменная Как выбрать запись в AlertDialog с помощью опции checkbox android? Как захватить подпись человека Не удалось получить трансляцию android.intent.action.EVENT_REMINDER Приложение разбилось, и я не могу его понять План экрана предпочтений Android Что происходит с приложением Android, когда телефонный звонок прерывает приложение? Как передать несколько аргументов через xml для настраиваемого сеттера при использовании привязки данных Android Фон стиля AppCompat, распространяемый на изображение в ToolBar SwipeRefreshLayout setRefreshing () не показывает индикатор первоначально Мониторинг доставки Android GCM Метатег Viewport не работает в iPhone и Android

Программный щелчок в 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, он работает. Что может быть неправильным? Благодарю.

Solutions Collecting From Web of "Программный щелчок в Android 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();})()"); } });