为您找到搜索结果:5879个
与webview打交道踩过的坑
随着HTML5被越来越多的用到webAPP的开发当中,webview这一个神器便日渐凸显出重要地位。简要的说,webview能够在移动应用中开辟出一个窗口,在里面显示html页面,css以及js代码也可以被解析执行,它使用的是我们熟悉的webkit内核。android和ios都有相应的API,所以写一份代码在多个平台运行的能力就是以webview为基础的。 今天我们要聊的不是如何使用webview,而是笔者本人作为一名前端工程师,在与客户端开发人员通过webview打交道中遇到的种种神奇事件。 事情还得从去年说起,我还是一个小白实习生的时候。当经理知道有webview这个神器之后,遂下令让android组和ios组削减工作内容,所有共同的界面均由web组提供。而web组当时处于“传统软件公司无前端”的局面,页面相当臃肿,压根不适于移动设备。于是乎,不明局势的经理指挥一个不明真相的小白实习生,带着还没使利索的jQuery,开始了所谓的HybridApp开发。一个凄惨的故事拉开序幕,下面是在开发当中踩过的各种坑,记录下来以供备忘。 webview会调用系统自带...
根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面
纯js,直接分享,直接使用:varbrowser={versions:function(){varu=navigator.userAgent,app=navigator.appVersion;return{//移动终端浏览器版本信息trident:u.indexOf('Trident')>-1,//IE内核presto:u.indexOf('Presto')>-1,//opera内核webKit:u.indexOf('AppleWebKit')>-1,//苹果、谷歌内核gecko:u.indexOf('Gecko')>-1&&u.indexOf('KHTML')==-1,//火狐内核mobile:!!u.match(/AppleWebKit.*Mobile.*/),//是否为移动终端ios:!!u.match(/(i[^;]+;(U;)?CPU.+MacOSX/),//ios终端android:u.indexOf('Android')>-1,//android终端或者uc浏览器||u.indexOf('Linux')>-1iPhone...
php 接口与前端数据交互实现
最近在做前后端数据交互的尝试,也跳了很多坑,使用的是php+bootstrap-table+js,把一些收获记录在这里,方便查询。这个小项目,仅有3个文件,分别为:crud.htmldata.phpcrud.sql数据交互实现1:查询mysql数据库建表php查询接口前端数据展现mysql数据库建表 数据库名称:crud 第一个表名:t_users 主键:user_id,自增长排列 php:<?php//测试php是否可以拿到数据库中的数据/*echo"44444";*///做个路由action为url中的参数$action=$_GET['action'];switch($action){case'init_data_list':init_data_list();break;case'add_row':add_row();break;case'del_row':del_row();break;case'edit_row':edit_row();break;}//查询方法functioninit_data_list(){//测试运行crud.html时是否可以获取到...
跨域调用接口的方法之一:$.ajaxSetup()
跨域查询接口的数据,之前在公司时有发生过,产生的原因是,本地请求的域名或IP地址不一致,解除方法,也是修改域名和IP地址。比如:接口中的数据来自IP地址:192.168.1.23/get.php如果本地调用这个接口中的数据,必须要修改你的请求地址也同样为192.168.1.23/get.php通常的做法是将接请求地址组合为一个对象和一个方法,通过调用这个方法来调用接口:/*查询接口*/varconfig={"protocol":"http","server":"oliveche.com","virtualDirectory":"quiz/api.php"};vargetBaseUrl=function(){returnconfig.protocol+"://"+config.server+"/"+config.virtualDirectory+"/";} 最近在做一个笔记时,因为也是调用别人的接口,而产生了跨域,即使在本地更改了请求的域名或IP地址也不能直接使用$.ajax({})中的get或post,会直接报跨域请求失败,解决的办法是使用:$.ajaxSetup()首先了解...
php post接口,登录功能
登录功能同注册功能一样,都是使用post方法,在执行sql语句时,同样要使用"select*from表名where键名=参数"的查询方式,不同的是:注册使用查询语句是为了判断注册用的字段值是否重复?注册失败:注册成功;登录使用查询语句是为了查询表中是否有那个字段的值?登录成功:登录失败; 另一个相同的地方是都用到了 mysql_num_rows($result)的sql语句,都用它来做一件事,那就是通过它来确定返回的值是否为1,根据返回这个值,来进行判断是否成功:注册时,使用 $row=mysql_num_rows($result);如果$row=1,手机号存在,注册失败;登录时,使用 $row=mysql_num_rows($result);如果$row=1,手机号存在,登录成功;这个接口同样分为5步走:连接服务器;$link=mysql_connect("localhost","root","root")ordie("连接服务器失败".mysql_error());//防止中文乱码mysql_query("SETNAMESUTF8");&nb...
php post接口,注册功能
功能描述:仅输入手机号和密码,实现注册功能。手机号有简单的验证,不可重复输入,否则会报500错误。 在使用RestClient进行post测试时,如果你把参数放在【Headers】区块了,那么,插入的数据值是空的,可以看下图:我把传回的参数值tel和pwd的值和Content-Type放在一起了,这是不对的,因为【Payload】中的参数为空,因此在查看数据库时,发现插入了一条参数为空的数据: 在使用RestClient进行post测试时,【Headers】区块仅仅是添加Content-Type,而【Payload】区块才是添加参数的地方:这时也能查到数据: 同查询功能一样,这个接口也是分5步走:连接服务器,防止中文乱码选择数据库执行sql语句,设置post的参数,判断手机号是否重复根据插入的数据返回值,判断是否新增成功关闭服务器下面是代码:<?php//post接口//1、连接服务器$link=mysql_connect("localhost","root","root")ordie("连接服务器失败".mysql_error());//防止中文乱...
php get接口,并在浏览器中以json格式返回查找到的数据
php查询数据有6个步骤,分别为:连接数据库服务器,使用的命令为:mysql_connect("服务器名称","用户名","密码")选择数据库,使用的命令为:mysql_select_db("数据库的名称[可选的资源号,也就是第一步的变量名$conn]")执行sgl语句,使用的命令为:mysql_query(sql语句);获取执行结果,并把获取到的数据存放在一个数组中,使用的命令为:mysql_fetch_array(),会返回多行,因此要使用while循环关闭数据连接,使用的命令为:mysql_close(连接服务器的变量)将结果转换为JSON格式,并输出到客户端,使用的命令为:json_encode(第4步中定义的数组变量)代码分析:<?php//php接口的写法,php访问mysql数据库的基本步骤,获取用户//1连接数据库服务器:mysql_connect("服务器名称","用户名","密码");ordie("前面语句执行不成功后返回的信息".mysql_error());//.mysql_error()这个函数的意思是什么原因导致前面的sql语句执行失败$conn=my...
微信订阅号消息回复测试
最近在研究微信公众号开发,消息回复是订阅号基础的可获取的接口,因此先从这里开始练起。我的服务端采用的是新浪的SAE平台,现在要想提交代码,是要每月上交10元的,有500M空间可用。以腾讯云服务器为示例:腾讯云服务器购买入口,购买指导请参考快速入门linux云服务器。学生党注意:腾讯公司为在读高校生提供了云+校园计划,1元/月即可使用腾讯云。 开始操作,进入微信公众开发平台后台,个人一般只能申请订阅号(限制主要功能),我这里使用的是微信的【公众平台测试帐号】。流程:下载微信php示例代码:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html 配置服务器:注册新浪云服务器SAE》创建应用》选择云空间(不要选择标准环境)》输入二级域名名称/应用名称》最低配置,付10元》创建成功》控制台》云应用SAE》管理应用》代码管理》上传微信php示例代码配置测试帐号:登录微信开发平台》开发》开发者工具》公众平台测试帐号》进入。只要你登录微信开发平台,就可以在【公众平台测试帐号】中看到:ap...
android——处理Google play因WebView SSL Error Handler alerts被拒的问题
最近app上线,由于上述问题,被google市场给拒了。看到这个,点进GooglehelpCenterarticle,应该知道问题所在了。直接在项目里找到使用webview的地方。找到webviewClient,看看你有没有处理onReceivedSslError方法。怎么处理的。是不是按照规范。MD,要忙了。直接贴代码publicvoidonReceivedSslError(WebViewview,SslErrorHandlerhandler,SslErrorerror){finalSslErrorHandlermHandler;mHandler=handler;AlertDialog.Builderbuilder=newAlertDialog.Builder(activity);builder.setMessage("ssl证书验证失败");builder.setPositiveButton("继续",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInt...
android——webview拦截跳转指定url后,点击返回界面重定向的问题
webview拦截跳转很多人都有用到,但是拦截后,在想返回的时候,界面会重定向。加入界面本来是要跳转到百度界面,但是被我拦截后,跳转到其他界面去了。当我点击返回键后,界面仍然会跳转到百度界面。这个时候,该怎么解决呢?我这里采用伪回退的方法来避免重定向的产生。什么是伪回退?根据需求,可以分为两种。一种是,直接回到原生界面,关闭webview所在界面。一种是,回到html的上级界面。这两种情况实现起来,其实一样,都是在点击返回键后,再次进行拦截。过滤掉正常的回退界面。如果是第一种,直接将webview销毁,关闭activity。第二种情况,就是在拦截后,指定跳转到上街界面,自己理清楚界面跳转情况。合理的拦截跳转。功能就容易实现。从图上可以看出,被拦截的url在回退键点击后,多了个“#/”断点一下,就知道怎么处理这个事件了。...
android——webview解决goback()后,界面会刷新的问题
看上图,我一级界面,从欧冠进的二级界面,从二级界面返回到一级界面后,界面刷新了一下。频道给我回到了“重要”上。这个真不符合我的要求。怎么办?在网上找不刷新的方法。找了一圈,发现很多都不靠谱,都是抄袭的。//设置缓存模式webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//开启DOMstorageAPI功能webView.getSettings().setDomStorageEnabled(true); 就是这个误导人的方法。讲真的,我试过了,一点用都没有,可能在你的手机上有用吧。反正我试过了,没用。那怎么办?后来在一个评论里找到了。最近才找到的解决方案,必须是代码里新建webview啊,每点击一次新建一个webview,返回前进什么的在这几个webview里切换,基本上能实现返回不刷新。对,就是这个方法。新建webview就可以了。在需要的时候,新建一个webview,剩下的,可以不新建。我只是为了确保一级界面不刷新。所以,只新建了二级界面的webview,从二级界面开始,webv...
android——webview动态修改html界面
这里动态修改虽然有点夸张,但是,效果还是达到了。这里得重点讲一下webviewClient的一个方法:shouldOverrideUrlLoading。这个方法太伟大。啥都能拿到。当点击某个超链接需要跳转的时候,这个方法也是第一时间响应到了。返回true,则表示不需要它处理,由程序员自己处理,返回false则表示,这个url还得webview自己跳转。明白这点,就get到了吧。我们就是要在跳转到二级界面的时候,来预处理一下二级界面,把二级界面修改修改,再展示给用户。问题来了。怎么改?改好了怎么办?首先。需要把跳转时间拦截下来,我这里就世界根据二级界面的url来判断什么时候拦截。给shouldOverrideUrlLoading返回一个true,表示,这事,你别管了,我来处理。其次,就是怎么改了。这里我用的是jsoup来获取html代码的,也可以采用其他方式,方法很多,我只取一个。这里得开辟一个子线程来操作,毕竟耗时的操作,你敢放在主线程,他就敢抛出异常。jsoup本身提供了很多方法供你来操作这个界面,本来我是通过select方法得到element后,再使用element的wrap()方...
android——webview修改html界面,达到去除或隐藏部分界面的效果
去除NBA及CAB频道。为了达到这个效果,当时考虑了两种方式。第一种是在webview加载前,先讲html代码拉下来,修改后,在通过webview去加载。第二种就是查看源代码,直接动手修改源代码,然后把源代码放在assets文件下,每次直接从本地加载。在查看完源代码(在电脑浏览器,打开网页,右键单击,查看源代码)后发现,这个网页,太适合第二种方式了。频道是写死的。可以直接改。而其他的界面都是通过js动态生成的。毫不犹豫的把源代码copy下来(注意格式,utf-8,无bom,否则中文乱码)。就这样,第一个问题顺利解决了。加载assets下的html代码方式为:webview.loadUrl("file:///android_asset/test.html"); ...
javaweb 学习的好地方
http://www.cnblogs.com/xdp-gacl/p/3729033.html强烈推荐这个哥们的学习笔记。太赞了。...
android 根据网络来获取外网ip地址及国家,地区的接口
新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js新浪多地域测试方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.192.3.42搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8搜狐另外的IP地址查询接口:http://txt.go.sohu.com/ip/soip淘宝:http://ip.taobao.com/service/getIpInfo.php?ip=8.8.8.8另:http://www.telize.com/iphttp://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=183.129.210.50http://city.ip138.com/ip2city.asp...