1

複数のボタンがあるUIWebViewページがあります。のどのボタンがクリックされたかを識別する必要がありますUIWebView.

UIWebviewロードコンテンツのページソース:

        <form action="settings_personal.php" data-ajax="false" method="post">   
            <input type="submit" name ="btn_settings_personal" value=" Goals (Personal data) " data-icon="star" data-theme="g" />
        </form> 

        <form action="settings_global.php" data-ajax="false" method="post"> 
            <input type="submit" name ="btn_settings_global" value=" Settings " data-icon="gear" data-theme="g" />
        </form>
        <form action="" data-ajax="false" method="post">    
            <input type="submit" name ="btn_web_access" value=" Web Plattform Access " data-icon="plus" data-theme="h" />
        </form>     

ボタンという名前の「btn_web_access」でクリックされたボタンを識別する必要があります???

私は以下を実装しました:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{

 NSString* clicked = [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('btn_web_access').click();"];

    NSLog(@"CLICK %@",clicked);

}

しかし、それは役に立たない..事前に感謝します。

4

2 に答える 2

5

リクエストのURL属性を使用して、ロードリクエストのターゲットを区別するだけです。

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{

    NSLog(@"url: %@", [[request URL] absoluteString]);

    return YES;

}

呼び出されているURLに基​​づいて、現在表示されているWebページのどのボタン(または任意のリンク)がクリックされたかがわかります。次に、必要なアクションを実行し、要求されたURLを実際にロードするかどうかを示すBOOL値を返すことを忘れないでください。

Swiftではあなたが持っているかもしれません

func webView(webView:UIWebView,
          shouldStartLoadWithRequest request:NSURLRequest,
          navigationType:UIWebViewNavigationType) -> Bool
    {
    if (navigationType == .FormSubmitted)
        {
        print("was the 'submit' form")
        }

    let u = request.mainDocumentURL
    print("local or remote url was " ,u)

    return true // allow the form to in fact send the form
    }
于 2012-08-10T08:09:07.940 に答える
0

HTMLコードでこれを行う

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:
    (NSURLRequest *)request navigationType: 
    (UIWebViewNavigationType)navigationType {
        if ([request.URL.scheme isEqualToString:@"inapp"]) {
            if ([request.URL.host isEqualToString:@"capture"]) {
            // do capture action
        }  
        return NO;
     }  

   return YES;
}
于 2017-02-09T11:09:12.587 に答える