Val*_*riy 13 javascript android android-webview
我有一个WebView和Button活动.Android sdk 17.网站不是我的,所以无论如何我都无法改变它.我需要通过android按钮点击来执行js代码.
我正在努力做到这一点
public class RostelecomLoginActivity extends Activity {
WebView webView;
String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rostelecom_login);
Intent webIntent = getIntent();
final String url = webIntent.getStringExtra("url");
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSaveFormData(true);
webView.getSettings().setSavePassword(true);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
webView.addJavascriptInterface(new Object(){
@JavascriptInterface
public void test(){
Log.d("JS", "test");
}
},"Android");
webView.loadUrl("javascript:(function(){document.getElementById('mA').click();})()");
}
});
webView.loadUrl(url);
}}
Run Code Online (Sandbox Code Playgroud)
但它没有做任何事情.我怎么称呼我的js吧?
小智 15
webview.loadUrl("javascript:functionName(\"" + argument + "\")");
Run Code Online (Sandbox Code Playgroud)
Vas*_*asu 12
改变你的行...
myWebView.loadUrl("javascript:testEcho('Hello World!')");
Run Code Online (Sandbox Code Playgroud)
尝试这个可能对你有帮助...
我假设您在单击正在访问的外部网站时尝试调用测试函数。
调用您在 Java 端定义的函数的方法是通过您在创建 javascript 接口时分配的名称(在您的情况下)"Android"
所以调用将是“window.Android.test()”
此外,您还必须等待加载网站,然后注入 javascript 代码。
查看我几周前所做的答案,代码为“隐藏 WebView,直到 JavaScript 完成”。这是使用 webview 管理 JS 和 Java 的类似方法。
考虑在页面加载时开始进行简单的测试,然后将其添加到 javascript 单击函数中。