Здравствуйте. Я реализую WebView следующим образом:
public class MainActivity extends AppCompatActivity {
private WebView mWebView;
private TextView textView;
private Button btnMyAudio;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webView1);
textView = (TextView) findViewById(R.id.textView);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://anika-cs.ru/app/music/index.html");
mWebView.setWebViewClient(new MyWebViewClient());
}
private class MyWebViewClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
/* view.loadUrl("javascript:(function() { \" +\n" +
" \"hide('dev_req_run_btn');\"+\n" +
" \"var panel = document.getElementById('dev_const_count');\"+\n" +
" \"panel.style['width'] = '550px';\"+\n" +
" \"function hide(id){if (document.getElementById(id)){document.getElementById(id).style['display'] = 'none';}}\"+\n" +
" \"})()");*/
injectScriptFile(view, "js/script.js");
}
private void injectScriptFile(WebView view, String scriptFile) {
InputStream input;
try {
input = getAssets().open(scriptFile);
byte[] buffer = new byte[input.available()];
input.read(buffer);
input.close();
String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
view.loadUrl("javascript:(function() {alert('dsdsd');})()");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Вот мой код html:
function myFunction() {
document.getElementById("demo").innerHTML = "YOU CLICKED ME!";
}
</script>
</head>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
<div style="widh:200px;height:200px;background-color:red;" id="block1">
</div>
<div style="widh:200px;height:200px;background-color:gray;">
<button onclick="" id="dev_const_ovner">OK</button>
</div>
<p id="demo" onclick="myFunction()">Click me.</p>
</body>
</html>
Страницу загружает, но как мне выполнить js, после загрузки страницы??Хотя бы на примере вывода alert диалога? Спасибо.
К mWebView надо добавить WebChromeClient, тогда будет работать
view.loadUrl("javascript:(function() {alert('dsdsd');})()");
Добавление WebChromeClient
mWebView.setWebChromeClient(new WebChromeClient());
Без метода инъекции в onPageFinished
:
view.loadUrl(
"javascript:(function() { " +
"var element = document.getElementById('dev_const_owner_id');" +
"element.value='185645054';" +
"})()"
);
Работает.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возможно ли при перетаскивании DOM-элемента средствами jQeury UI заменить перетаскиваемый объект, например, во время выхода его за пределы указанного...
Есть вопрос который давно меня мучаетФункции вроде chrome