在Android WebView中调用javascript函数

时间:2013-06-10 12:32:49

标签: 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);

}}

但它没有做任何事情。 我该怎么称呼我的js吧?

3 个答案:

答案 0 :(得分:15)

webview.loadUrl("javascript:functionName(\"" + argument + "\")");

答案 1 :(得分:12)

用这个改变你的行..

myWebView.loadUrl("javascript:testEcho('Hello World!')");

试试这个可能对你有所帮助......

答案 2 :(得分:1)

我假设您在点击要访问的外部网站时尝试调用测试功能。

调用您在Java端定义的函数的方法是在创建javascript界面​​时指定的名称,在您的情况下"Android"

所以调用将是“window.Android.test()”

此外,您必须等待加载网站,然后注入javascript代码。

查看几周前我用代码Hide WebView until JavaScript is done做的答案。这是使用webview管理JS和Java的类似方法。

考虑在页面加载时开始进行简单测试,然后将其添加到javascript点击功能中。