3

我目前正在访问另一个团队为涵盖应用程序中的某些功能而构建的网页(因此我无法更改网页)并且我遇到了一个小问题。其中一个按钮仅Javascript在满足某些要求后才被激活(通过 ),UIWebView当它被激活并单击时,它不会被注意到。这意味着shouldStartLoadWithRequest不会被调用,我需要它来执行某些功能。我正在查看源代码并且该按钮HREF最初没有,我认为这可能会使 UIWebView 感到困惑。有没有人对我如何UIWebView通知这个按钮有任何想法?

谢谢,
迈克

按钮的 HTML:

如果没有 URL:<a class="ts_btn book_btn" href="">Book</a>
如果有 URL:<a class="ts_btn book_btn" href="/bookings/new?date=2013-10-10&amp;bus_id=2&amp;slot_number=9">Book </a>

4

2 回答 2

2

一种方法是使用 stringByEvaluatingJavaScriptFromString 调用修改 web 视图中的 href

NSString *js = @"document.getElementById('mybuttonid').setAttribute('href','http://www.dummylink.com/')";

[webView stringByEvaluatingJavaScriptFromString: js];

然后你可以使用

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType

实际忽略链接并执行您需要的功能。

于 2013-10-09T12:19:26.270 回答
1

如果我没记错的话,你想从 UIWebView 在 iPhone 浏览器中打开链接。意味着当用户单击按钮时,它将在 iPhone 浏览器中重定向。如果我是对的,请尝试使用以下步骤,否则请在下面评论我错了。我不会介意:

  1. 将 UIWebViewDelegate 添加到您的标头类(.h 文件)中
  2. 在您的方法类(.m 文件)中添加以下方法

    #pragma mark - Webview Delegate Methods
    -(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType 
    {
          if ( inType == UIWebViewNavigationTypeLinkClicked ) 
          {
               [[UIApplication sharedApplication] openURL:[inRequest URL]];
               return NO;
          }
        return YES;
    }
    
于 2013-10-09T11:50:24.530 回答