javascript实现阻止iOS APP中的链接打开Safari浏览器
上次根据网上的教程给自己的网站弄了一个Web APP,但是给用户的感觉却十分糟糕。
问题说明:
怎么了?原来是打开WEB APP后在主页上随意打开连接,就会自作主张地打开Safari浏览器。原来好好的伪装和心情就全被破坏掉了。这该如何是好?原来解决方法十分简单。仅仅加入这些代码就好了。实验测试在本人的 iPhone (iOS 7.1)和iPod (iOS 6.1.4)上测试通过,根据原作者的叙述,最新的 iOS 7.0.4(iPhone 与 iPad)测试通过,代码应该兼容性不错,在这里分享:
问题解决:
<script type=“text/javascript”>
//iOS Web APP中点击链接跳转到Safari 浏览器新标签页的问题
if ((“standalone” in window.navigator) && window.navigator.standalone) {
var noddy, remotes = false;
document.addEventListener(‘click',
function(event) {
noddy = event.target;
while (noddy.nodeName !== “A” && noddy.nodeName !== “HTML”) {
noddy = noddy.parentNode;
}
if (‘href' in noddy && noddy.href.indexOf(‘http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes)) {
event.preventDefault();
document.location.href = noddy.href;
}
},
false);
}
</script>
建议将代码放到/head标签前,当然,另外存为一个js 文件引用也是可以的。
相关推荐
-
iOS9中的WebKit 与 Safari带来的惊喜
每个用过 UIWebView 的iOS开发者对其诸多的限制和有限的功能也深有感触.悻然,自iOS8推出 WebKit 框架后将改变这一窘境.在本文我将会深入WebKit来体验一下它给我们带来的好处,同时也看看在iOS9中新加入的 SFSafariViewController 有些什么新的惊喜. 通用的浏览行为 所谓的通用浏览行为主要可以归纳为以下的几种: 网页载入进度 前进 后退 刷新 如果每个用到 WebView 的 app都要做一个专用的Controller也挺麻烦的,我以前就直接采用其它第
-
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
var date = new Date('2016-11-11 11:11:11'); document.write(date); 最近在写一个时间判断脚本,需要将固定好的字符串时间转换为时间戳进行比较,在做的时候个人习惯使用chrome作为调试工具,代码基本完成之后,一切正常: 使用其他浏览器访问,好嘛,IE跟safari都不兼容,返回错误"Invalid Date". 想着估计是字符串格式的问题,改成'2016/11/11 11:11:11'再测试,结果正常,以为这样应该没问题了,
-
IOS中safari下的select下拉菜单文字过长不换行的解决方法
今天遇到下图这种问题,文字过长,显示不全.折腾了老半天,在网上搜了半天也找不到解决方案. 于是问了下同事,同事提到了<optgroup>,这个标签厉害. <optgroup> 标签定义选项组. optgroup 元素用于组合选项.当您使用一个长的选项列表时,对相关的选项进行组合会使处理更加容易. 以上所述是小编给大家介绍的IOS中safari下的select下拉菜单文字过长不换行的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对
-
safari调试iOS app web页面的步骤
Overview 当下移动端开发过程中大量使用前段H5.js等等技术,而这些web页面的调试在Xcode控制台中不太明了,经常我们移动app运行了就是方法,但是不能显示响应的效果,这时候或许就是已经报错了,但是我们在Xcode控制台是看不到这些错误.这时候我们就可以用功能强大的Safari浏览器来开启开发模式连接iPhone来调试app脸面的web页面了. Safari设置 打开Safari偏好者设置,选中"高级菜单",在页面最下方看到"在菜单中显示开发菜单"的复选
-
iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程
下面通过图文并茂的方式给大家分享下这方面的知识,具体内容如下. 相对于谷歌对广告拦截的禁止,苹果与之态度截然相反,继Mac版Safari加入广告拦截工具之后,即将到来的iOS9对Safari也引入了内容拦截插件-Content Blocker,并且开发者可以使用最新的Xcode7开发以及使用iOS 9模拟器进行调试,下面,笔者将用一个简单的实例进行讲解如何开发Content Blocker. 在使用Google搜索时,排行靠前面的几条永远都是广告项,比如搜索"iPhone6",得到的结
-
javascript实现阻止iOS APP中的链接打开Safari浏览器
上次根据网上的教程给自己的网站弄了一个Web APP,但是给用户的感觉却十分糟糕. 问题说明: 怎么了?原来是打开WEB APP后在主页上随意打开连接,就会自作主张地打开Safari浏览器.原来好好的伪装和心情就全被破坏掉了.这该如何是好?原来解决方法十分简单.仅仅加入这些代码就好了.实验测试在本人的 iPhone (iOS 7.1)和iPod (iOS 6.1.4)上测试通过,根据原作者的叙述,最新的 iOS 7.0.4(iPhone 与 iPad)测试通过,代码应该兼容性不错,在这里分享:
-
iOS APP中保存图片到相册时崩溃的解决方法
环境: iPhone Version 11.0.3 , Xcode Version 9.0 问题: 昨天维护APP时,发现拍照后保存图片时应用崩溃,输出如下: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryAddUsageDescr
-
iOS App中实现播放音效和音乐功能的简单示例
播放音效 iOS开发过程中可能会遇到播放音效的功能 其实很简单,iOS已经提供了一个框架直接负责播放音效 AudioToolbox.framework 新建项目 TestWeChatSounds 给新建的项目导入AudioToolbox.framework 导入成功之后如下图 项目目录如下 接下来我们给项目中添加几个caf格式的音效文件 接下来 我们打开 项目默认生成的ViewController中添加代码 导入 AudioToolbox 复制代码 代码如下: #import <AudioTo
-
详解iOS App中UITableView的创建与内容刷新
UITableView几乎是iOS开发中用处最广的一个控件,当然也是要记相当多东西的一个控件. 创建 首先创建一个新的项目,并添加一个MainViewController的Class文件 打开MainViewController.h文件 @interface MainViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> @property (nonatomic, retain) NSArray
-
详解iOS App中调用AVAudioPlayer播放音频文件的用法
要给工程中添加音频,首先要导入音频的框架 AVFoundation.framework 然后新建一个类继承于UIViewController, 我这里就叫FirstVC. 首先在 AppDelegate.m中初始化根视图 复制代码 代码如下: #import "AppDelegate.h" #import "FirstVC.h" @implementation AppDelegate - (void)dealloc { [_window release];
-
详解iOS App中UiTabBarController组件的基本用法
UiTabBarController这个控制器绝对是项目架构时做常用的一个控件. 我们大致看下控件的效果,我们就知道为什么说他常见了. 这就是最简单的一个雏形,想必现在基本70%的应用界面结构都会是这样的. 在Android中我们以ActivityGroup或是现在的fragment来实现,一个容器中包含多个子控制器. 下面我们还是以建立xib文件的形式来实现一个这样的整体布局的例子. 当然在 xcode中我们会发现其实直接有这么一个模板了 但是直接使用模板后会发现是直接在代码里实现了子布局得添
-
iOS App中调用相册中图片及获取最近的一张图片的方法
UIImagePickerController从拍照.图库.相册获取图片 iOS 获取图片有三种方法: 1. 直接调用摄像头拍照 2. 从相册中选择 3. 从图库中选择 UIImagePickerController 是系统提供的用来获取图片和视频的接口: 用UIImagePickerController 类来获取图片视频,大体分为以下几个步骤: 1. 初始化UIImagePickerController 类: 2. 设置UIImagePickerController 实例的数据来源类型(下面解
-
iOS app中无网络页面的添加方法详解
前言 大家应该都会遇到这样一个需求,在开发app的过程中,为了能有更好的用户体验,往往会加入没有网络时的页面展示,告诉用户当前的网络状态不可用,那么具体如何来实现实时监测网络状态的呢,就是我们接下来要讨论的问题了.话不多说了,来一起看看详细的介绍吧. 实现思路 我的实现思路大致如下:采用第三方库RealReachability监听网络状态的变化,然后在基类中添加监听,然后在基类中提供对外的方法,用来判断当前的网络状态,以便子类可以在不同的网络状态时做出对应的操作.最后自定义一个无网络界面,在没有
-
在iOS App中实现地理位置定位的基本方法解析
iOS系统自带的定位服务可以实现很多需求.比如:获取当前经纬度,获取当前位置信息等等. 其定位有3种方式: 1,GPS,最精确的定位方式 2,蜂窝基站三角定位,这种定位在信号基站比较秘籍的城市比较准确. 3,Wifi,这种方式貌似是通过网络运营商的数据库得到的数据,在3种定位种最不精确 首先你要在你的Xcode中添加两个连接库,MapKit和CoreLocation,如图 core location提供了定位功能,能定位装置的当前坐标,同时能得到装置移动信息,最重要的类是CLLocationMa
-
详解在iOS App中自定义和隐藏状态栏的方法
自定义状态栏 有时候,需要在状态栏上显示一些自定义信息,比如新浪微博的官方iOS客户端:告知用户信息处于发送队列.发送成功或者发送失败. 如上图,通过在状态栏显示自定义信息,可以给用户友好又不影响软件使用的提示. 为此,我们显得定义一个自定义状态栏类,包含一个显示信息的Label: 复制代码 代码如下: @interface CustomStatusBar : UIWindow { UILabel *_messageLabel; } - (void)showStatusMes
随机推荐
- Request.QueryString与一般NameValueCollection的区别
- ASP.NET MVC后台参数验证的几种方式
- Python装饰器的函数式编程详解
- 用asp实现访问远程计算机上MDB access数据库文件的方法
- C语言实现图的遍历之深度优先搜索实例
- 微信 开发生成带参数的二维码的实例
- 利用js的Node遍历找到repeater的一个字段实例介绍
- nodejs实现bigpipe异步加载页面方案
- 如何对ASP.NET网站实现静态化
- mysql忘记密码的解决方法
- js操作浏览器的参数方法
- Java中对HashMap的深度分析
- java实现的二级联动菜单效果
- VC实现A进程窗口嵌入到B进程窗口中显示的方法
- C++中可以接受任意多个参数的函数定义方法(详解)
- Android开发中多进程共享数据简析
- Android 新闻界面模拟ListView和ViewPager的应用
- Android XUtils3框架的基本使用方法(二)
- ajax请求data遇到的问题分析
- Spring Boot实战之模板引擎