从活动中调用javascript函数?

时间:2011-04-01 02:33:51

标签: javascript android dom webview

如何使用我的活动中的按钮调用加载到webView中的HTML文档中的函数?即:ImageButton(名为:bookBtn)位于活动的标题栏中。当按下/点击它时,我需要它来触发webView DOM中的一个函数 - 它基本上将一个新的HTML文档加载到实现滑入效果的DOM中。

我找到了大量关于如何从webView到活动的文档,但没有相反的方法。谷歌说它can be done,但确实没有任何例子。我试图调整他们展示的示例代码here,但我无法让它工作。感谢您的任何意见。

下面是加载到webView中的HTML文档中的函数mWebView:

    <script type="text/javascript">
    $(document).ready(function() {
        function loadTOC(){$.mobile.changePage("docs/1-1.html", "slideup");
        };
    });
</script>

...而且在我的主要活动中,我按照Google文档尝试了这个但不起作用:

    ImageButton imageButton = (ImageButton) findViewById(R.id.bookBtn);
    imageButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
        mHandler.post(new Runnable() {
            public void run() {
                mWebView.loadUrl("javascript:loadTOC");
            }
        });
        }
    });

2 个答案:

答案 0 :(得分:8)

代码中至少存在两个问题:

1)javascript URL不会调用loadTOC函数,它只是引用它。你想要的是:

mWebView.loadUrl("javascript:loadTOC()");

2)loadTOC函数不是全局可见的AFAIK,因此javascript URL将无法访问它。

您还应该确保启用JavaScript,因为编码没有良好的建议。

答案 1 :(得分:2)

我没有在这里看到所以我要补充一点,你应该确保你有

mWebView.setWebChromeClient(new WebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);.

在您的Android代码中