如何在我的javascript代码中混合我的java代码?

时间:2014-12-10 08:46:49

标签: javascript android webview

我花了最后九个小时试图学习javascript和一些jquery函数。所有实现“我认为是什么”的HTML文件中的简单修改为我的Android应用程序。

我想要做的是给我的HTML文件中的每个字母添加一种颜色。当使用spannableString从文本文件读取到textView时,我已经实现了这一点。但是使用javascript会产生一些格式化问题。我的代码会更好地解释它:

        webview.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url)
            {
                char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();
                //cSsO stores the color schema. Give a letter and return its color
                cSsO = new ColorizeSchemeClassObject(0);
                //Run a script that give color to each letter.
                webview.loadUrl("javascript:(function() { "+
                        "for (i = 0; i < 27; i++) " +
                        "{var regExp = new RegExp('"+alphabet[0]+"', 'g');" +
                        "document.body.innerHTML = document.body.innerHTML.replace(regExp, " +
                        "'<font  color=\""+cSsO.ReturnCharColor(alphabet[0])+"\">"+alphabet[5]+"</font>');};"+
                        "})()");
            }
        });

        webview.loadUrl("file:///android_asset/2.html");

这段代码有效,但有些东西我需要更改并添加到最后完成此...我需要将“(?![^&lt;&gt;] *&gt;))”表达式添加到我的regExp搜索,所以它不会弄乱HTML(我知道这不是防弹,但它足够我想要的东西),在普通的javascript,我没有格式,以适应loadUrl字符串,我只是写

var re = new RegExp( "(" + alphabet[0] + "(?![^<>]*>))", 'g' );

但我似乎无法弄清楚如何将其与第一个代码片段相结合(香港专业教育学院用',',\和+尝试了数百万次而没有成功。

我的第二个任务,我如何在字母数组中使用forloop中的var'i'。例如。字母[ 'I'〕。

我感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

如果你想从javascript调用本机java代码,请使用android的JavaScriptInterface。

JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");

Declare the class JavaScriptInterface:

public class JavaScriptInterface {
    private Activity activity;

    public JavaScriptInterface(Activity activiy) {
        this.activity = activiy;
    }

    public void myNativeMethod(){
        // Do something
    }
}

You can call myNativeMethod() method of java like below from HTML/JS

<HTML>
onclick="window.JSInterface.myNativeMethod();"
</HTML>

有关详细信息,请检查, http://developer.android.com/guide/webapps/webview.html