微信网页开发问题汇总

来源:互联网 发布:手机淘宝怎么看优惠券 编辑:程序博客网 时间:2024/04/30 12:00

最近做一个微信公众平台的一个订购网页,产生了好多问题,下面是问题与解决方法,欢迎指正学习。

1.如何只让网页在微信打开,其他浏览器拒绝访问?

因为是个订购网页,所以会牵扯恶意用户通过其他途径注册,购买,造成不必要的麻烦。
其他有一种常用的解决方法,那就是使用post提交方式,这样就保证了数据的安全性。可是也是存在一些弊端的,比如,外部还是可以查看网页界面的,如果我不想让通过其他途径看到界面呢,这样保证了数据的绝对安全。

大家都是到微信用的是x5的内核,既然是微信,这么大一个东西,肯定有与众不同的地方,经过百度查阅,我是用这个方法解决的,(原理就是判断其中某一个标志性的东西,判断他的访问来源,从而判断是不是通过微信访问的,博主走马观花,也就会用)

var useragent = navigator.userAgent;if (useragent.match(/MicroMessenger/i) != 'MicroMessenger') {    //不是通过微信访问的}else{    //执行正常,通过微信访问}

这样就轻松解决了,安全问题,我的做法是,这网页的head头部里面直接进行判断,如果不是微信,那么直接跳转错误界面。

2. 跨页面数据传输

这个其实已经不是微信开发特有的,当然也是个大问题,我就说说。

1.form表单提交,这个单价一般都会用。method : get/post

2.window.location.href?name=’ys’;
这个有点类似于get方法,优点就是可控制性强,可以随时进行跳转。某些情况下挺有用的,比如:
ok执行代码,error执行代码,可以随意判断跳转页面。

3.利用ajax进行传输
如何实现,可以查看 原生实现ajax;
当然这个方法和后天进行数据交互用的较多。

4.利用cookie存数据

//arg1 名字, arg2 值, arg3过期时间function setCookie(objName,objValue,objHours){  //添加cookie     var str = objName + "=" + escape(objValue);     if(objHours > 0){                           //为0时不设定过期时间,浏览器关闭时cookie自动消失         var date = new Date();         var ms = objHours*1000;         date.setTime(date.getTime() + ms);         str += "; expires=" + date.toGMTString();     }     document.cookie = str; } //清除cookiefunction clearCookie(objName){    var arrStr = document.cookie.split("; ");    for(var i = 0;i < arrStr.length;i ++){        var temp = arrStr[i].split("=");        var date = new Date();        var ms = -100*1000; //过期时间为100s以前,        date.setTime(date.getTime() + ms);         document.cookie = temp[0] + "= ''; expires=" + date.toGMTString();;    }}//根据名字获得cookie值function getCookie(objName){    //从cookie变量中获取指定的值              var arrStr = document.cookie.split("; ");    for(var i = 0;i < arrStr.length;i ++){        var temp = arrStr[i].split("=");        if(objName == temp[0]){            return unescape(temp[1]);        }    }}

在代码中,我设置过期时间为100s前,在夸页面以后,由于立马设置了他的过期时间,所以导致他的数据就失效了,所以跨页面之后,我们要先保存cookie数据,然后就清除cookie,这样可以防止有些用户按返回键,cookie存留,造成数据冲突的bug。

目前就这么些问题,有了问题在更新吧……

0 0