1

にJavaScriptが含まれているWebサイトを呼び出す必要がありますWebView。JavaScript は、ネストされたオブジェクトのメソッドを次のように呼び出します。

window.plugins.anObject.method();

そして、その呼び出しをインターセプトして、呼び出されmethod()たときに何かを実行する必要があります (つまり、method()Java のネイティブ実装)。pluginsそのオブジェクトがなければ、私はただやります

myWebView.addJavascriptInterface(new Object() {
    @JavascriptInterface
    public void method() {
        // yay!
    }
}, "anObject");

しかし、私が書いたように、別のオブジェクトanObjectの子でなければなりません。pluginsだから私が試したのは、に置き換えることでし"anObject""plugins.anObject"が、うまくいきません。これを達成する方法はありますか?

4

1 に答える 1

-1

使用のインスタンス:

window.plugins.anObject.method();

これを試すことができるかもしれません:

ウェブビュー コード:

myWebView.addJavascriptInterface(new Object() {
    @JavascriptInterface
    public void anObject() {
        return new Object(){
             @JavascriptInterface
             public void method() {
                 //yay!
             }
        }
    }
}, "plugins");

js コード:

window.plugins.anObject().method();

ノート:

js に返される NPObject は一般的な JavaScript オブジェクトではありません。このオブジェクトを反復することはできず、次のような webview で定義するときにメンバー関数を再定義することはできません。

$(function(){
var old_method = window.plugins.method;
window.plugins.method = function(){
    //do some thing
    old_method();
    //do another thing
};
});
于 2014-07-15T01:43:17.343 に答える