1

が表示URLされてuiwebviewおり、正常に動作しています。

したがって、Web ページには実際にいくつかの Javascript 関数 (fun1、fun2、fun3...) が含まれており、webview で一部を選択すると実行されます。

したがって、私の要件は、webview の選択時に実行されている Javascript メソッドを検出することです。

だから私はUITapGestureRecognizerwebviewを実装しました。

[myWebView addGestureRecognizer:tapGestureRecognizer]; 

webview で選択すると、次のメソッドが呼び出されます。

-(void)singleTap:(UIGestureRecognizer *)gestureRecognizer
{

   [myWebView stringByEvaluatingJavaScriptFromString:@"function getItem(){ var functionName =arguments.callee.name; alert(functionName);}getItem()"];
    
}

しかし、実行される Javascript メソッドを取得できません。どうすれば取得できますか?

注:arguments.callee.name; 非推奨になっていることをどこかで読んだことがありますが、それが問題ですか?

4

1 に答える 1

1

次のように、リモート Web ページの JavaScript を変更して、現在実行中の関数の名前でグローバル変数を設定する必要があります。

var CURRENT_FUNCTION = '';
function someFunction() {
    CURRENT_FUNCTION = 'someFunction()';
}

次に、iOS 側から、コードを次のように変更することでこれを実現できます。

NSString *currentFunction = [myWebView stringByEvaluatingJavaScriptFromString:@"return CURRENT_FUNCTION"];

それは理にかなっていますか?

于 2012-03-28T18:45:56.683 に答える