空链接是使用javascript:void(0)还是使用#none
通过微信推送链接。在ios系统中(android显示正常),微信内页打开链接后,点击页面的一个按钮,页面被重新加载了,这时才可以对页面进行其它操作。
原因:a标签的引起的
<a href="#none" class="btn" id="btn"></a>
href=“#none” 这是本来是使用空链接,并使用JS控制ID来给按钮添加功能,但是在微信中会导致第一次点击按钮时页面出现重新加载现象……
解决办法如下:
<a href=”javascript:void(0);” class="btn" id="btn"></a>
注:javascript:void(0) 链接无返回值。
当a标签href为空链接,写法为javascript:void(0),也不是说使用href="#none"就是错误的,在pc端上使用也是没有问题的,href="javascript:void(0);是专业化的一种表现,更值得我们去写,毕竟它解决微信中存在的一个bug...
H5的音视频自动播放问题
1. 背景和问题由来
(chrome浏览器)项目中用到了一个短视频页面加载动画,一开始视频无声正常。接着需求变更,让视频动画加上一个背景音乐,然后就不能播放了。然后开始了各种尝试和api文档查询。为何一个带声音的视频文件在chrome浏览器里无法有声自动播放呢?
经过调研和尝试,发现:
video标签的有声自动播放在ie和firefox以及低版本的chrome浏览器都能正常。video标签的有声自动播放在高版本的chrome浏览器里,第一次播放正常,第二次和之后不正常。强刷新(清理浏览器缓存)后又正常。
–video标签用js动态加载,本页面的url变化后,视频正常播放;不变化视频不能正常播放。有点像重定向的可播放的味道。
2.调研发现
首先看看MDN对video标签的相关属性的描述,你会发现,对autoplay的描述里,多了一些关于chrome浏览器的补充描述:
In some browsers (e.g. Chrome 70.0) autoplay doesn't work if no muted attribute is present.
大致意思就是:静音播放。
然后,查询些其他资料,发现chrome的版本更新里,也有相关描述,连接如下:
https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
不能翻墙的可以直接看下面截图:
里面也介绍了chrome浏览器对视频播放的一些限制:静音自动播放;手动触发播放等等。
查询了一下,发现chrome浏览器之所以加这种限制,也是为了解决用户痛点:各种自动播放视频广告。如果是移动端上自动播放,那么流量就是用户自己承担了,而用户还不自知。只能说该浏览器在关注用户体验方面走在了其他浏览器厂商的前面。
3.解决方法
暂时只有2种方式:
- 静音自动播放:
<video src="xxx.mp4" autoplay muted></video>。 - 非静音手动触发播放。
如何查看WINDOWS下的环境变量位置
微信支付–签名错误问题
最近在做微信支付,调用微信的统一下单支付接口http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1时,老是返回“签名错误”,偶尔可以成功,不知道是怎么回事。我在日志中打印出生成的字符串和签名,然后用相同的数据在微信支付提供的在线支付调试工具生成签名,发现生成的签名结果一样!生成的最终xml也一样,但接口就是返回
<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[签名错误]]></return_msg>
</xml>
POST给微信的xml内容:
<xml>
<appid><![CDATA[wxe587fed28211bccb]]></appid>
<body><![CDATA[Demo]]></body>
<device_info><![CDATA[WEB]]></device_info>
<fee_type><![CDATA[CNY]]></fee_type>
<mch_id><![CDATA[1265056801]]></mch_id>
<nonce_str><![CDATA[ejnshgum39igp6qwpvzwb5jbwk8yigqz]]></nonce_str>
<notify_url><![CDATA[http://testpay.le1.com.cn/wechat/notify.htm]]></notify_url>
<openid><![CDATA[opZb3wsfU6RUZGxgFZ6OXVbdVxcU]]></openid>
<out_trade_no><![CDATA[1002_09745565EpuxTunUCD0AA72E]]></out_trade_no>
<product_id><![CDATA[QWE789C1523QWE78]]></product_id>
<sign><![CDATA[BF4BB39FFAFC4DF470C5A3F7784678BD]]></sign>
<spbill_create_ip><![CDATA[172.16.12.171]]></spbill_create_ip>
<total_fee><![CDATA[1]]></total_fee>
<trade_type><![CDATA[NATIVE]]></trade_type>
</xml>
首先 , 看到返回msg显示签名错误 , 第一反应官网提供的路径去生成了一下签名做比较 , 结果发现签名算法是没错的.
https://pay.weixin.qq.com/wiki/tools/signverify/
找了各种方法 , 百度谷歌搜索了一下午 , 发现很多同行都遇到了一样的问题 , 得到了以下解决方法
1、确认公众号的appSecret和商户号的API密钥没有搞混。
2、重置商户API密钥。(本人亲测是这样解决了问题,tx真是个坑,我严重鄙视。)
学会了JAVA后可以开发APP了吗?
答:
1、android原生开发的基础是java
2、如果你要开发app,不可能只开发android版本的,还要有ios版本的
3、现在的情况是,很少有公司会用原生的代码去开发android(java)和ios(object-c)了。
4、趋势是用一套html5的代码开发兼容android和ios。徐多蔚推荐:【uni-app商业级应用实战_一次搞定小程序 安卓 iOS H5】
5、如果你想从事app的开发那么建议你去学习4.推荐apicloud和ionic。
6、但是学习开发app的长相只是app的一部分,后端实现(一般都是java提供app数据操作的接口)也重要
7、如果想要发展更好,赚更多的钱,建议把java学好,慢慢做好后台开发,往分布式,大数据发展。当然在学习的同时你也可以去学习一下app页面开发的基础(ionic或者apicloud)
8、单纯的开发app,现在基本都是前后端分离,前端做页面和跳转等请求逻辑,后台根据前端的请求做数据和业务逻辑的处理然后把数据返回给前端做显示。app基本就是页面的实现(如果用ionic或者apicloud)相对来说简单(主要还是html5和js)。但是要做好后台就比较复杂了学习的东西较多。
session跨域,相同服务器,不同域名。session互通调用方案。
同一服务器上有2域名:A、B
A下有c1.php页面。
<?php
session_start();
echo session_id();//ei3ddccd7gdjaj5ohq5g7rmvi6
$_SESSION['cs']=1;
?>
B下有c2.php页面
<?php
session_id("ei3ddccd7gdjaj5ohq5g7rmvi6");
session_start();
echo $_SESSION['cs'];
?>
提示:ei3ddccd7gdjaj5ohq5g7rmvi6 为A下c1.php的session_id的值。实际应用中可有多种传值方式。
tips:
tp5中:跨域,同服务器下,session互通写法,参考如下:
session_id(“ei3ddccd7gdjaj5ohq5g7rmvi6”);
session(“ss”,””);
//echo Session::get(‘username’)
徐多蔚亲测无误!
web项目中,线上的在线客服系统推荐.
01.百度商桥【应用体现:http://diy.shoptpl.com】
软件下载:https://qiao.baidu.com/download.html
操作文档:https://qiao.baidu.com/assets/doc/bridge2016-manual.pdf
02.LayIm
官方:http://layim.layui.com/
json_decode 把数组转成对象了
对json_decode解析完josn数组的时候变成了 object 对象
<?php
$json = ‘{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}’;
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
上例将输出:
object(stdClass)#1 (5) {
[“a”] => int(1)
[“b”] => int(2)
[“c”] => int(3)
[“d”] => int(4)
[“e”] => int(5)
}
array(5) {
[“a”] => int(1)
[“b”] => int(2)
[“c”] => int(3)
[“d”] => int(4)
[“e”] => int(5)
}
可以看出 json_decode($data,true)输出的一个关联数组,由此可知json_decode($data)输出的是对象,而json_decode(“$arr”,true)是把它强制生成PHP关联数组.
request:fail ssl hand shake error 微信小程序 调试预览失败
我的解决方案:因为我是bt宝塔集成环境,我直接用的宝塔给我自动分配的 宝塔ssl【提示:先在宝塔ssl切换按钮中申请成功后部署】 Let’s Encrypt
提示:部署好后,没有重新启动服务器。
网上解决方案:
问题:本地调试request能正常访问https,真机调试预览的时候无法获取数据,提示:request:fail ssl hand shake error
解决方法:
证书是申请的腾讯云免费的, ssl证书配置需要使用pem,不使用crt, 之前一直不行,后来配置修改成 pem就好了
# ssl_certificate /etc/ssl/xxx.crt;
ssl_certificate /etc/ssl/xxx.pem;
pem 可以通过crt+key在线合成:https://www.myssl.cn/tools/merge-pem-cert.html






