我的布局中有一个webview和一个Button(在webview之外)。 我想知道当我点击按钮时有没有办法执行javascript代码(例如使用其OnClick事件)
编辑:
我有这个HTML
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="PruebaAlert.js"></script>
</head>
<body>
<!--Your content here-->
</body>
</html>
我在PruebaAlert.js中有我的函数JS
function myJSFunction(){
alert('hello, i was hit by Android button');
}
public class MainActivity extends Activity {
int pulsado = 0;
//Controla que estamos usando el layout web_view_not_visible
boolean web_view_not_visible = true;
TextView text;
Button button;
WebView myWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view_not_visible);
myWebView = (WebView)findViewById(R.id.webview);
myWebView.loadUrl("file:///android_asset/StackOverflow.html");
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
if(true){
button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("WebView Debug" , "Entre en onClick()");
myWebView.loadUrl("javascript:myJSFunction()");
}
});
}
}
}
我点击按钮(它位于布局的底部)但警报不显示。如果我在Chrome或Firefox中打开HTML,则可以正常使用
会发生什么?
谢谢!
答案 0 :(得分:2)
<强> HTML 强>
<html>
<head>
<script type="text/javascript">
function myJSFunction(){
alert('hello, i was hit by Android button');
}
</script>
//OR
<script type="text/javascript" src="yourJSFile.js"></script>
</head>
<body>
<!--Your content here-->
</body>
</html>
<强> yourJSFile.js 强>
function myJSFunction(){
alert('hello, i was hit by Android button');
}
<强>的onCreate 强>
myWebView.loadUrl("yourHtml.html");
然后在单击按钮时调用javascript:
myButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
myWebView.loadUrl("javascript:myJSFunction();");
}
});
答案 1 :(得分:1)
你可以像这样调用javascript
myWebView.loadUrl("javascript:test('arguments')");
至于你在评论中提到的第二个问题。
Where do i put my javascript file?
webview可以通过两种方式加载页面,一个从应用程序加载html页面,第二个指向外部站点。在这两种情况下,JS都应放在HTML查找的位置。