常见问题解决

Posted panrui1994

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见问题解决相关的知识,希望对你有一定的参考价值。

1. ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
方案一:
inputOnFocus(e){
    setTimeout(() => {
        e.target.scrollIntoView(true);
        // true:元素的顶端将和其所在滚动区的可视区域的顶端对齐; false:底端对齐
    }, 200);
}
方案二:
var timer;
// 输入框获得焦点时,将元素设置为position:static,设置timer
inputOnFocus(e){
    e.target.style.className = ‘input input-static‘;
    timer = setInterval(function(){
        document.body.scrollTop = document.body.scrollHeight
    },100)
}
// 输入框失去焦点时,将元素设置为 position:fixed,清除timer
inputOnBlur(e){
    e.target.style.className = ‘input input-fixed‘;
    clearInterval(timer)
}
注释:缺点就是输入的时候不能滑动页面

 

2跨域的解决办法
1:JSONP方法
原理:利用<script>元素的开放策略,得到从其他来源动态产生的JSON数据,需要对方的服务器做支持
优缺点:兼容性比较好 缺点只支持GET方法
使用:(将回调函数fn作为参数传递给目标地址)
<script type="text/javascript">
    function fn(data) {
        alert(data.msg);
    }
</script>
<script type="text/javascript" src="http://crossdomain.com/jsonServerResponse?jsonp=fn"></script>
目标地址将传递进来的函数与需要返回的数据拼接成一个字符串.
fn({ msg:‘this is json data‘})
注释:jQuery中JSONP形式都是GET请求和异步,不存在同步情况,切默认会清楚缓存
$.ajax({
    url:"http://crossdomain.com/jsonServerResponse",
    dataType:"jsonp",
    type:"get",//可以省略
    jsonpCallback:"fn",//->自定义传递给服务器的函数名,而不是使用jQuery自动生成的,可省略
    jsonp:"jsonp",//->把传递函数名的那个形参callback变为jsonp,可省略
    success:function (data){
        console.log(data);
    }
});

2:CORS方法
原理:CORS通信过程都是浏览器自动完成的,浏览器一旦返现AJAX请求跨域,就会自动添加一些附加的信息头,
因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信.
优缺点:优点在于功能更加强大支持各种HTTP Method,缺点是兼容性不如JSONP
使用:
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Methods:POST,GET");
//在服务器端设置同源策略地址
router.get("/userlist", function (req, res, next) {   
    var user = {name: ‘Mr.Cao‘, gender: ‘male‘, career: ‘IT Education‘};  
    res.writeHeader(200,{"Access-Control-Allow-Origin":‘http://localhost:63342‘});  
    res.write(JSON.stringify(user));  
    res.end();  
}); 

3:WebSocket

 

 

 

4:ios不能兼容时间格式中间是横线bug
new Date(time.replace(/-/g, ‘/‘)).getTime()

 

5:在H5页面添加一张图片的时候,发现图片无缘多出一个下边距,切并没有元素占据该区域,解决办法是将图片设置为块级元素:dispaly:block

 

6:火狐浏览器会有一套自己的按钮的边距计算规则
解决办法:
button::-moz-focus-inner,  
input[type="reset"]::-moz-focus-inner,  
input[type="button"]::-moz-focus-inner,  
input[type="submit"]::-moz-focus-inner {  
    border: none;
    padding:0;
}

 

7:H5拨打电话问题解决
记一次移动端开发H5拨打电话 常见的H5唤起系统拨打电话的使用方法
<a class="none" href="tel:4008196968">拨打电话</a> //如果我们正常的在屏幕点击a标签确实可以进行拨打电话,但是业务需求导致,我们需要使用js代码控制,当我使用jquery触发a标签的点击事件才发现 并没有如我想要的进行拨打电话; 解决办法:触发a标签里面的文字,通过JavaScript的冒泡原理,由浏览器去触发事件进行电话拨打 <a class="none" href="tel:4008196968"><span class="js_lijiWenYi">立即问医</span></a> 后记:看过网上相关资料都说,当我们点击a标签的超链接的时候,实质是点击a标签的文字,从而才打到跳转的目的,如果单纯点击a标签,是不会进行跳转,暂时还没有测试

 




以上是关于常见问题解决的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 PHP,预期文件结尾,我错在哪里?

[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段

13 个非常有用的 Python 代码片段

C++ 代码片段执行

BootStrap有用代码片段(持续总结)

Chrome-Devtools代码片段中的多个JS库