UIWebView没有使用动态链接调用Button上的shouldStartLoadWithRequest

时间:2013-10-06 10:12:28

标签: javascript iphone ios objective-c

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

谢谢,
麦克

按钮的HTML:

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

2 个答案:

答案 0 :(得分:2)

一种方法是使用stringByEvaluatingJavaScriptFromString调用来修改webview中的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

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

答案 1 :(得分: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;
    }