我需要帮助。我想在安卓工作室点击我的webView上的一个按钮。该按钮实际上是具有按钮id="的搜索按钮;"搜索图标遗留";在HTML代码中。我写了这个代码,但它什么也没做,只是在我的android浏览器中打开youtube,而不是点击搜索按钮。有人能帮我吗?这是我在MainActivity.java:中的代码
```
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView view = (WebView) findViewById(R.id.webView);
WebSettings faller = view.getSettings();
faller.setJavaScriptEnabled(true);
view.loadUrl("https://www.youtube.com/");
view.setWebViewClient(new WebViewClient());
view.loadUrl("javascript:(function(){document.getElementById('search-icon-legacy').click();})();");
}
}
```
要在webview中执行一些点击环境,如果你可以编辑web代码或知道点击按钮时调用的函数名,你可以这样做:
这是web上调用的JavaScript:
function androidFinish() {
Android.finish();
}
创建你的WebInterface,这个类将在你的webView上设置,以说明当函数JavaScript被调用时你想做什么。
class WebAppInterface(private val context: Context) {
@JavascriptInterface
fun finish() {
(context as Activity).finish()
}
}
在这里,名为finish的函数将完成作为上下文传递的活动。
然后在你的活动中,你实现了webView:
- 确保您在webView上启用JS,如下所示:
webview.settings.javaScriptEnabled = true
- 将您的webView配置到您的webInterface:
webview.addJavascriptInterface(WebAppInterface(this), "Android")
在这里,"Android"
引用根调用函数,正如您在JS代码中看到的那样。然后".finish()"
可以在WebInterface上调用的函数名中引用。
android文档来源:https://developer.android.com/guide/webapps/webview#BindingJavaScript