2012-08-10 2 views
1

У меня есть страница UIWebView с несколькими кнопками. Необходимо определить, какая кнопка нажата источника Page 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); 

} 

, но его не из use..Thanks заранее.

+0

Ваш stringByEvaluatingJavaScriptFromString вызов будет просто вызвать новое событие кнопку мыши. Это не кажется полезным, поскольку вы спрашиваете, как определить, какая кнопка была нажата, а не как программно нажать кнопку. См. Мой ответ о том, как это помогает. – alex

ответ

4

Просто используйте атрибут URL просьбе, чтобы отличить запрос от нагрузки в цель:

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

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

    return YES; 

} 

На основе URL вызывается, вы знаете, какая кнопка (или даже любая ссылка) вашей отображаемой в данный момент веб-страницы была нажата. Затем выполните требуемое действие и не забудьте вернуть значение BOOL, указывающее, действительно ли загружать запрошенный URL.

В 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 
    } 
+0

Но веб-страница Alex не содержит никаких действий, pls проверит ниже

Injar

+1

Просто установите произвольную ссылку, которая поможет вам идентифицировать вашу кнопку внутри параметра действия. Когда пользователь нажимает на эту кнопку, просто возвращайте NO в файле shouldStartLoadWithRequest. Таким образом, этот клик не приведет к фактической загрузке страницы внутри webview. – alex

+0

Alex из-за вас любой другой вариант, как идентифицировать имя кнопки Clicked UIWebview. – Injar

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; 
} 
Смежные вопросы