Html 如何强制UIWebView在浏览器中打开链接?

Html 如何强制UIWebView在浏览器中打开链接?,html,ios,url-scheme,Html,Ios,Url Scheme,我们有一个网站。在某些情况下,用户可以使用内置浏览器从Facebook应用程序或VKontakte应用程序打开。我想在Safari或其他浏览器中打开一个链接。但不是在这个网络视图中 是否有任何HTML属性或其他东西可以告诉WebView本身没有打开此链接 更新:我不是应用程序开发者。我是网络开发者。我没有任何访问Facebook应用程序的权限。我需要强制Facebook应用程序打开不在其内置浏览器中的链接。Web视图包含一些委托方法,用于从委托方法中查找单击事件。您需要像这样调用URL [[U

我们有一个网站。在某些情况下,用户可以使用内置浏览器从Facebook应用程序或VKontakte应用程序打开。我想在Safari或其他浏览器中打开一个链接。但不是在这个网络视图中

是否有任何HTML属性或其他东西可以告诉WebView本身没有打开此链接


更新:我不是应用程序开发者。我是网络开发者。我没有任何访问Facebook应用程序的权限。我需要强制Facebook应用程序打开不在其内置浏览器中的链接。

Web视图包含一些委托方法,用于从委托方法中查找单击事件。您需要像这样调用URL

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.google.com"]];
这是在单击web视图中的任何链接时激发的委托方法

    -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
{
   [[UIApplication sharedApplication] openURL:[request URL]];
}

}

只需将URL与URL请求区分开来。

您可以使用UIWebViewDelegate:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if(UIWebViewNavigationTypeLinkClicked == navigationType /*you can add some checking whether link should be opened in Safari */) {

        [[UIApplication sharedApplication] openURL:[request URL]];
        return NO;
    }
    return YES;
}

如果已设置
UIWebViewDelegate
,则可以使用该方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
使用此方法,我们可以阻止或允许在
UIWebView
或移动浏览器中打开某些链接/URL

所以我们可以做一些类似的事情

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    // We only want to block links
    if(navigationType == UIWebViewNavigationTypeLinkClicked) {
        NSString *url = [[request URL] absoluteString];
        if([url isEqualToString:@"http://www.google.co.uk"]) {
            // If the requested url is a link and is http://www.google.co.uk block it from loading in the UIWebView and load it in the mobile browser.
            if([[UIApplication sharedApplication] canOpenUrl:[request URL]]) {
                // We should be checking to make sure we can open it first, for whatever reason we might not be able to and we don't want to give the user a bad journey.
                [[UIApplication sharedApplication] openURL:[request URL]];

                // We also need to tell our UIWebView not to do anything so we need to return NO.
                return NO;
            }
        }
    }

    // If all is OK and we are happy for any other link to be included then just return YES and continue.
    return YES;
}
如果要阻止所有链接,则只需删除
IsequalString:
If语句
,或者只需将
else If
添加到
If语句
即可阻止某些链接。此代码执行以下两项操作之一:它将在
UIWebView
中加载已单击的链接站点;或者,如果它传递
if语句,它将在移动浏览器中加载该站点

更新

事实证明,用户并不是在做
objective-c
方面的事情,他们在做
html
方面的事情,而这并不是最初的问题,但因为这可能会在将来帮助用户,所以我将在这里留下我的答案

编辑

由于用户正在使用
html
尝试将用户引导到移动浏览器,因此他们正在查找的内容称为URL方案。不幸的是,我不相信在iOS 7上有任何URL方案可以打开safari移动浏览器。
以前有人问过这个问题,所以我不会坐在这里重复所有的问题,我只会告诉你问题和答案

你尝试过什么吗?我尝试过在链接中添加target=“\u blank”,但没有任何帮助。不,这对
UIWebView
没有任何帮助。你尝试过给出的任何答案吗?你需要截取点击
shouldStartLoadWithRequest:
并返回否,这样
UIWebView
将不会加载,但在返回否之前,你需要做任何你想做的事情。我无法尝试下面的答案,因为我只能修改网站。很抱歉,你当时错误地标记了你的问题。如果这只是与站点相关的,而您没有开发应用程序本身,因此没有objective-c,那么这与
UIWebViews
有什么关系?请正确地重新标记您的问题。您在
[[UIApplication sharedApplication]openURL:[[request URL]];
不同的打字错误现在应该是
[[UIApplication sharedApplication]openURL:[request URL]];
已修复,现在我可以给出+1。
//codigo para abrir no safari
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {

NSURL *requestURL =[ [ request URL ] retain ];
if ( ( [ [ requestURL scheme ] isEqualToString: @”http” ] || [ [ requestURL scheme ] isEqualToString: @”https” ] || [ [ requestURL scheme ] isEqualToString: @”mailto” ])&& ( navigationType == UIWebViewNavigationTypeLinkClicked ) )
{ return ![ [ UIApplication sharedApplication ] openURL: [ requestURL autorelease ] ]; } [     requestURL release ]; return YES;

}