日常Js学习汇总(2)
最近搞项目改版,存在新老需求,这次就项目内遇到的一些问题和学习到的新知识做一个笔记。
cookie
主要是设置cookie
和删除cookie
的问题,一般设置cookie
可以如下设置
1 | document.cookie = `${"cookie名"}=${"cookie值"};expires=${"cookie生命时间"};domain=${"存储域名"};path=${"相对路径"}`; |
或者用jquery.cookie
这个库来设置(主要就是方便点,不用拼那么长字符串),如下
1 | $.cookie("cookie名","cookie值",{expires:'cookie生命时间',domain:'存储域名',path:'相对路径'}); |
实现上没什么难度,但是在项目中代码执行后偏偏没有在控制台中看到存入的cookie,很蛋疼。
最后发现问题出在domain上。项目里是区分环境的,不同的环境存入不同的域名,其实这也不是问题,问题是我设置的是测试环境的域名,但是我看代码效果的时候去的是docker。。。。。瞬间感觉自己的智商被清零了。。。。。。主要还是当初试着在控制台里输入了上述代码,控制台里确实也存入了和当前域名不一样的域名的cookie,被这个坑惨了,而且至今都不知道为什么在控制台写可以存不同域名的cookie但是代码里就存不进去。
mescroll插件问题
新需求中有个顶部下拉刷新,底部上拉加载的功能,这里使用了mescroll这个插件,demo示例如下
1 | var mescroll = new MeScroll("mescroll", { |
示例代码中并没有什么问题,但是实际运用中由于要判断是否存在下一页的情况,这里就会使用到mescroll.endSuccess
这个方法(接口数据中并没有返回total或是pageTotal);
其实没有total或者pagetotal也不是什么大问题,完全可以通过pageSize来判断是否存在下一页数据,坑就坑在它的加载中
这段标签也不是插件内部自动控制的,这个标签也需要用mescroll.endSuccess
这个方法来进行判断,否则当前页加载完之后下次再拖到底部时就不会触发上拉加载方法。
微信小程序的支付功能跳转
由于这次需求中将m站和小程序搞在一起,准备将m站嵌在小程序的web-view
中,然而这里有个问题,那就是支付功能,小程序内部不允许调用微信接口的支付功能,只能使用调用小程序自己的支付接口,这意味着原本m站的支付功能将失效,而如果调用小程序的支付接口那就必须从内嵌的m站页面中将参数传给小程序,所以后来就想了一个办法,通过webview
跳转时的url
把支付所需参数传给小程序,从而调用小程序的支付功能。
具体实现是m站内部判断出当前环境是小程序还是h5页面,小程序则将支付所需参数通过调用小程序的跳转方法跳到一个空白的web-veiw
上将url的参数带出,并在这个新的web-view
上进行支付功能的实现,如果不是小程序就还是用原来的微信支付方式支付。小程序具体代码如下:
1 | onLoad: function (options) { |
以上就是这次项目中所获取的经验。
edit by AmamiRyoin