首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用UIWebView在Safari中打开除某些链接之外的所有链接?

使用UIWebView在Safari中打开除某些链接之外的所有链接,可以通过以下步骤实现:

  1. 首先,创建一个UIWebView对象,并将其添加到你的视图层级中。
  2. 设置UIWebView的代理对象,以便在加载链接时进行处理。在代理方法中,你可以检查链接的URL,并决定是否允许加载该链接。
  3. 在代理方法shouldStartLoadWithRequest中,获取链接的URL,并进行判断。如果链接是你想要排除的链接之一,可以返回true,允许加载该链接。如果链接不是你想要排除的链接之一,可以返回false,阻止加载该链接。
  4. 如果链接不是你想要排除的链接之一,你可以使用UIApplicationopenURL方法,将链接打开在Safari中。这样,除了你排除的链接之外的所有链接都会在Safari中打开。

以下是一个示例代码:

代码语言:swift
复制
import UIKit

class ViewController: UIViewController, UIWebViewDelegate {
    @IBOutlet weak var webView: UIWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        webView.delegate = self
        
        // 加载网页
        let url = URL(string: "https://example.com")
        let request = URLRequest(url: url!)
        webView.loadRequest(request)
    }
    
    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        guard let url = request.url else {
            return true
        }
        
        // 排除的链接列表
        let excludedLinks = ["https://example.com/excluded1", "https://example.com/excluded2"]
        
        // 检查链接是否在排除的链接列表中
        for excludedLink in excludedLinks {
            if url.absoluteString == excludedLink {
                return true
            }
        }
        
        // 将链接打开在Safari中
        UIApplication.shared.openURL(url)
        
        return false
    }
}

在上述示例代码中,我们创建了一个UIWebView,并加载了一个网页。在shouldStartLoadWith代理方法中,我们检查链接是否在排除的链接列表中。如果链接是排除的链接之一,我们返回true,允许加载该链接。如果链接不是排除的链接之一,我们使用UIApplicationopenURL方法将链接打开在Safari中,并返回false,阻止加载该链接。

请注意,上述示例代码是使用Swift编写的,如果你使用的是Objective-C,你需要相应地修改代码。此外,你还可以根据自己的需求进行进一步的定制和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UIWebView 浏览器控件一、初始化与三种加载方式二、常用属性和方法三、代理方法 UIWebViewDelegate四、其它案例:

补充 : document.body.innerHTML 意思是获取body内容的所有源代码 JS代码在OC中的排版 第一种做法: NSMutableString *js = [NSMutableString...- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; 四、其它案例: 在Safari中打开链接地址 -...这时需要使用一些CSS样式来达到这些效果,这些CSS只适用于IOS中的Safari。 - -webkit-touch-callout 禁用长按触控对象弹出的菜单。...IOS中,当你长按一个触控对象时,如链接,safari会弹出包含链接信息的菜单。...IOS中,在页面元素中进行长按操作,safari会弹出菜单,来允许进行选择行为。

1.5K60

Hybrid App 应用 开发中 9 个必备知识点复习(WebView 调试 等)

库加载并使用, UIWebView 中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript...WKWebView NSURLProtocol问题 WKWebView 在独立于 app 进程之外的进程中执行网络请求,请求数据不经过主进程,因此,在 WKWebView 上直接使用 NSURLProtocol...如果调试的是 H5 页面,可以直接在手机的 Safari浏览器 打开直接调试。 下面开始说说在 Mac 上如何调试: 1....开启 Safari 开发菜单 先将 iPhone 连接到 Mac,在 Mac 的 Safari 偏好设置中,开启开发菜单。...,指向本地文件,省去频繁发布 H5 包,达到快速调试目的; 补充链接:《Fiddler工具使用介绍一》 九、调试企业微信、微信和钉钉版时,可以使用哪些工具?

3.2K00
  • Hybrid App 应用开发中 9 个必备知识点复习

    中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript 引擎; WKWebView...但是目前 IOS10 以下的系统以及很少了, 小结: WKWebView 相较于 UIWebView 在整体上有较大的提升,满足 iOS 上面使用同一套控件的功能,同时对整个内存的开销以及滚动刷新率和...WKWebView NSURLProtocol问题 WKWebView 在独立于 app 进程之外的进程中执行网络请求,请求数据不经过主进程,因此,在 WKWebView 上直接使用 NSURLProtocol...如果调试的是 H5 页面,可以直接在手机的 Safari浏览器 打开直接调试。 下面开始说说在 Mac 上如何调试: 1....开启 Safari 开发菜单 先将 iPhone 连接到 Mac,在 Mac 的 Safari 偏好设置中,开启开发菜单。

    2.3K30

    Hybrid App 应用开发中 9 个必备知识点复习

    UIWebView 中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript...但是目前 IOS10 以下的系统以及很少了, 小结: WKWebView 相较于 UIWebView 在整体上有较大的提升,满足 iOS 上面使用同一套控件的功能,同时对整个内存的开销以及滚动刷新率和...WKWebView NSURLProtocol问题 WKWebView 在独立于 app 进程之外的进程中执行网络请求,请求数据不经过主进程,因此,在 WKWebView 上直接使用 NSURLProtocol...如果调试的是 H5 页面,可以直接在手机的 Safari浏览器 打开直接调试。 下面开始说说在 Mac 上如何调试: 1....开启 Safari 开发菜单 先将 iPhone 连接到 Mac,在 Mac 的 Safari 偏好设置中,开启开发菜单。

    2.7K20

    【Hybrid】288- Hybrid App 应用开发中 9 个必备知识点复习

    中限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript 引擎; WKWebView...但是目前 IOS10 以下的系统以及很少了, 小结: WKWebView 相较于 UIWebView 在整体上有较大的提升,满足 iOS 上面使用同一套控件的功能,同时对整个内存的开销以及滚动刷新率和...WKWebView NSURLProtocol问题 WKWebView 在独立于 app 进程之外的进程中执行网络请求,请求数据不经过主进程,因此,在 WKWebView 上直接使用 NSURLProtocol...如果调试的是 H5 页面,可以直接在手机的 Safari浏览器 打开直接调试。 下面开始说说在 Mac 上如何调试: 1....开启 Safari 开发菜单 先将 iPhone 连接到 Mac,在 Mac 的 Safari 偏好设置中,开启开发菜单。

    2.3K20

    iPhone页面的常用调试方法

    在iPhone中调试,大体上与上文 安卓中的移动页面调试 类似,区别主要是iOS系统中的一些限制,导致某些工具无法使用。 本文基于此,简要介绍在iPhone中如何调试页面。...,在iPhone上不好设置HOST,所以需要一些代理工具帮助我们 除了Windows平台中常用的代理调试工具Fiddler之外,还可以使用Mac中的常用代理工具 Charles Fiddler 与上文类似...而对于某些需要账号授权登陆的页面,涉及到Cookie的模拟登录,可以使用这两个代理工具进行设置 在Fiddler中可以按前文安卓的配置 在Charles中也有对应的方法 ?...不过对于iPhone的调试,还需要进行真机的页面查看 一般来说,iPhone中的页面是在Safari浏览器中查看的 微信中的内置浏览器是WKWebView内核或 UIWebView ,WKWebView...其中 UIWebViewer 只是系统浏览器的一部分组建,功能不全或有所 限制 所以某些情况下可直接在手机的Safari浏览器进行查看调试,某些情况还是少不了在微信内置浏览器中进行 Safari远程调试

    3.4K10

    这些年iOS AppStore 套壳开发上架从棋牌类到彩票类在到如今的金融原油期货类App过程

    (b) 客户端中显示的任何软件或服务应在主机设备屏幕上完整呈现,并且不可使用超出远程桌面传输所需的 API 或平台功能。 (c) 所有帐户的创建和管理均必须从主机设备发起。...,在 app 中使用受保护的第三方材料 (例如商标、版权作品、专利设计);也不得在 app 套装或开发者名称中包含虚假、抄袭或误导性的演示、名称或元数据。...当你的数据充足 在App分析中可以点击App的时候请查看下图,如果还不能用请继续往下看 首先-在AppStore的数据不充足的情况下App分析中列表中的App数据是无法点击的,但是这个情况你又需要添加额外的渠道下载链接...,中文请转码之后填入,填完之后复制 “营销活动链接”中的链接就OK了 PS :在您生成营销活动链接后,请确保将其复制。...中的链接点击 跳转到浏览器Safari和直接调用Safari浏览器的实现方法!

    3.4K31

    iOS系统在线下载安装ipa文件,以及跳转描述文件信任证书的实现

    首先需要特别注意: 1、ipa 的下载地址放到 plist 的文件中,链接指定 plist(格式见下文) 2、plist 的链接必须是 https (SSL加密)的,而且必须是公网,自签名及免费的 https...Safari ,访问该链接,提示:在"iTunes"中打开链接吗?...点击直接跳转信任证书: 针对企业应用安装后如何在 Safari 中引导用户跳转到 [设置 - 通用 - 描述文件] 页面,以便用户信任企业签名描述文件,在 iOS9 的时候很方便,无论是在应用内还是在...iOS9 iOS10 in-App (openURL) ✓ Safari ✓ 另外还测试了一下,在应用内用 UIWebView 加载 HTML 进行跳转,结论与上一致。...直接跳转 [描述文件] 了,但是还有一个方式可以达到该效果,直接链接到一个企业签名的描述文件(.mobileprovision),在 Safari 中直接访问 https://raw.githubusercontent.com

    11.9K20

    iOS 解决微信h5支付无法直接返回APP的问题

    由于公司的业务需要,为了节省申请开通微信支付的时间和人力,公司决定使用微信h5支付。这样即节省了时间,同时以后所有的APP都能使用h5支付,既方便又快捷。...但是真正做的时候问题来了,当你支付成功之后或者是取消支付的时候会跳转到Safari浏览器,这就很尴尬了,完全无用户体验啊。当时看着Android可以直接返回到APP,心里瞬间不爽了。...下面开始我的坎坷之路了: 首先你在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 然后你通过统一下单后台会从微信拿到这么个链接...prepay_id=wx20180115115052bedf091fba0369993002&package=2975002856给你 拿到这个链接之后我们还无法直接加载webView,如果直接加载的话他会提示...- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType

    74030

    WKWebView 那些坑

    作者:林泽水 导语 WKWebView是苹果在WWDC 2014上推出的新一代webView组件,用以替代UIKit中笨重难用、内存泄漏的UIWebView, 拥有60fps滚动刷新率、和safari...在一些用webGL渲染的复杂页面,使用WKWebView总体的内存占用(app process memory + other process memory)不见得比UIWebView少很多。...在UIWebView上当内存占用太大的时候,app process会crash;而在WKWebView上当总体的内存占用比较大的时候,webContent process会crash,从而出现白屏现象。...1.2、检测webView.title是否为空 并不是所有页面白屏的时候都会调用上面的回调函数,比如,最近遇到在一个高内存消耗的H5页面上present系统相机,拍照完毕后返回原来页面的时候出现白屏现象...3、WKWebView NSURLProtocol问题 WKWebView在独立于app进程之外的进程中执行网络请求,请求数据不经过主进程,因此,在WKWebView上直接使用NSURLProtocol

    17.5K21

    iOS学习巩固笔记-UIWebViewJavaScript

    1 UIWebView简介 UIWebView是iOS内置的浏览器控件 系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但能加载远程的网页资源,还能加载绝大部分的常见文件...(‘test’); //根据ID获得某个DOM元素 3 OC中调用JavaScipt 使用UIWebView的stringByEvaluatingJavaScriptFromString方法即可。...//设置网页自动适应 self.webView.scalesPageToFit = YES; //设置检测网页中的格式类型,all表示检测所有类型包括超链接、电话号码、地址等。...,返回YES 表示加载该请求,返回NO 表示不加载该请求 //可以在该方法中拦截请求 -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest...(任意调用对象消息方法并可以传N多参数的一个类) 在iOS中可以直接调用某个对象的消息方式有两种: performSelector:withObject; NSInvocation。

    1.2K70

    IOS开发系列——UIWebView专题【整理,部分原创】

    自己生成的html,有时无法避免要使用local css, js or image(当然你也可以使用url来链接到网上的css/js/image)。...其解决方法需要Javascript和navtive code一起来做,其基本原理可参考这片文章,其流程是在Javascript handler中每创建Ajax的请求时,需要将这段js存在ajax_handler.js...http://blog.csdn.net/fengbingyang/article/details/7484453 方案一: 最近在使用ios中的UIWebView显示本地网页时,遇到如下问题:...UIWebView加载带有锚点的URL(如"file:///Users/admin/home.html#pos"),程序使用javascript的range.surroundContents方法在网页中为选中文字创建高亮标签...在PC浏览器上尝试并没有出现这种问题,因此猜测是可能是UIWebView自身的原因。

    94240

    iOS 解决微信h5支付无法直接返回APP的问题

    由于公司的业务需要,为了节省申请开通微信支付的时间和人力,公司决定使用微信h5支付。这样即节省了时间,同时以后所有的APP都能使用h5支付,既方便又快捷。...下面开始我的坎坷之路了: 首先你在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 然后你通过统一下单后台会从微信拿到这么个链接...,这个链接是通过拦截webView访问获取的,然后我试了一下,可以支付,也停留在了微信,于是我高高兴兴的去尝试了一下 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest...,然后进行支付,发现还是一样的会跳转到Safari浏览器,当时瞬间懵逼了,怎么会这个样子呢,不信邪的我又让Android那个哥们拦截一个链接给我,尝试一下不会跳转浏览器,我又试了一下自己的拦截的链接还是会跳转到...首先要设置scheme,假如scheme设置xxxx,那么你在Safari输入xxxx://就可以打开APP了。

    2.3K10

    iOS App 安全测试

    虽然keychain的访问有权限控制,但是,在越狱的设备上,是可以查看到所有的keychain存储数据。...所以在使用Keychain存储用户敏感信息(如 access_token, password等)时,最好还是要加密。...(2)怎么产看keychain中存储的数据 查看前提:使用越狱的设备 将keychain_dumper文件通过iFunbox 拷贝到设备上 ssh连接到设备 chmod 777 keychain_dumper...pageId=238326793 测试步骤: 设备设置代理为BurpSuite代理 操作App,产生通信请求数据 在BurpSuite代理上查看所有的请求数据,用户敏感信息应该要用HTTPS 请求传送,...URL来源是否安全 四、 UIWebView UIWebView是基于Webkit,和Safari和MobileSafari是使用同一个core framework的,所以App中的UIWebview

    7.9K40

    UIWebView与JS的交互

    除此之外,还需要禁用获取的HTML文本中自带的 标签自动加载,并把下载图片的操作放在native端来处理,并通过JS将图片在Cache中的地址返回给UIWebview。...以上表中的对应关系的解读是,例如第一条:在JS中如果调用了bridge.send(),那么将触发OC端_bridge初始化方法中的回调。...handler,我们在handler的block中下载所有图片。...连上你的iPhone或者使用模拟器,当你的程序当前显示了一个UIWebView,Safari会自动识别这个UIWebview,并可以在开发菜单栏中找到你的设备进行调试。 ?...选择控制台,你就可以看到久违的调试窗口以及JS的console.log了。 ? 以上就是使用 WebViewJavascriptBridge 进行UIWebView与JS的深度交互的例子。

    3.7K20

    WKWebView

    在iOS中,加载网页目前有两种控件:UIWebView和WKWebView。...2,WKWebView拥有与Safari中相同的Nitro JavaScript引擎,大大提高了页面JS执行速度;但是UIWebView不支持Nitro JavaScript引擎,所以加载较慢。...2,截屏捕获在WKWebView上会随机失败,因此,如果截屏的API是App中的关键操作,那么建议使用现有的UIWebView浏览引擎。...其他的区别如下: 1,UIWebView是UIKit框架的一部分,可以在应用程序内使用,无需导入任何内容;而WKWebView使用的是WebKit.framework,使用的时候需要导入到应用程序中。...当用户不能在某个方向上再移动时,使用canGoBack或者canGoForward来禁用按钮。 默认情况下,Web视图会自动将出现在Web内容中的电话号码转换成电话链接。

    6K20

    【IOS开发基础系列】UIWebView专题

    自己生成的html,有时无法避免要使用local css, js or image (当然你也可以使用url来链接到网上的css/js/image)。         ...其解决方法需要Javascript和navtive code一起来做,其基本原理可参考这片文章,其流程是在Javascript handler中每创建Ajax的请求时,需要将这段js存在ajax_handler.js...http://blog.csdn.net/fengbingyang/article/details/7484453     方案一:         最近在使用ios中的UIWebView显示本地网页时...在PC浏览器上尝试并没有出现这种问题,因此猜测是可能是UIWebView自身的原因。...3.2.2 【谨记】在WebviewVC的init方法中执行视图操作导致ViewdidLoad方法提前调起         这应该是IOS的一个bug,千万不能再WebViewVC的init方法中做视图操作

    38730

    IOS WebView控件详解

    概述 WebView就是一个内嵌浏览器控件,在iOS中主要有两种WebView:UIWebView和WKWebView,UIWebView是iOS2之后开始使用,WKWebView是在iOS8开始使用,...高达60fps的滚动刷新率和丰富的内置手势 WKWebView具有Safari相同的JavaScript引擎 WKWebView增加了加载进度属性 UIWebView UIWebView继承与UIView...字符串 baseURL用来确定htmlString的基准地址,相当于HTML的标签的作用,定义页面中所有链接的默认地址 */ - (void)loadHTMLString:(NSString...导航 在我们浏览网页,时常会使用到的刷新网页、前进、后退等导航操作,UIWebView里面也有对应的操作方法。...代理 在UIWebViewDelegate方法中,一共有4个方法需要注意: //是否允许加载网页,也可获取js要打开的url,通过截取此url可与js交互 - (BOOL)webView:(UIWebView

    4.9K80

    移动web真机调试方案

    @csxiaoyao.com QQ: 1724338257 对于前端开发来说,在pc端使用chrome等浏览器的开发者工具简直是好用到爆,Chrome手机模拟器可以帮助开发调试移动端web页面,...然后在PC端打开chrome浏览器,地址栏中输入: chrome://inspect,选中"Discover USB devices"选项,打开页面进行调试。...高级 -> 勾选"在菜单栏中显示开发" iPhone 设置:设置 -> Safari -> 高级 -> 打开 Web 检查器 通过手机的 Safari 来打开 H5 页面,然后将Mac上的Safari浏览器打开...3. spy-debugger调试 然而,很多场景下Chrome/Safari的真机调试有局限性,例如:在微信或其他App/浏览器中打开的页面,由于不能直接在 chrome/safari 中打开,因此不能直接使用浏览器真机调试工具...spy-debugger内部集成了weinre,通过代理的方式拦截所有html自动注入weinre所需的js代码,简化了weinre需要给每个调试的页面添加js代码。

    1.4K30
    领券