国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

淺談html5與APP混合開發遇到的問題總結

2024-08-26 00:20:33
字體:
來源:轉載
供稿:網友

背景

在公司參與一個原生APP和h5混合開發的項目,本人在項目中負責h5部分,現將項目中遇到的問題總結如下:

具體問題

問題1:頁面滾動條問題

問題描述

web頁面在PC瀏覽器上瀏覽時有滾動條;但是,在移動端瀏覽器打開時,沒有滾動條

解決方法

將頁面的最外層(我一般在寫頁面時,會在body標簽內寫一個大容器,用于存放頁面的內容)設置overflow:auto/scroll;并且不能設置height屬性的值(height:100%也不行)

例子

<body> <div style="overflow:scroll/auto;">  //網頁內容 </div></body>

問題2:touchstart 和 touchend 事件的使用

問題描述

引入touch.js文件,使用touchstart和touchend事件實現交互效果時,在部分手機出現事件觸發失效的問題[例如:低版本的榮耀手機]

解決方法

方法1:"removeEventListener"和"addEventListener"一起使用

方法2:添加e.preventDefault(); 阻止部分手機默認跳轉

法3:Jquery的on實現事件綁定

說明:法1與法2都是原生JS使用addEventListener實現事件監聽;并且dom元素使用touchstart和touchend事件時,需要結合事件綁定或者事件監聽一起使用,否則js部分會拋出異常

代碼

//法一:document.getElementById('list5').addEventListener('touchstart',callback, false);document.getElementById('list5').removeEventListener('touchstart',callback, false);document.getElementById('list5').addEventListener('touchend',callback, false);document.getElementById('list5').removeEventListener('touchend',callback, false);//法二:document.getElementById('list5').addEventListener('touchstart',function(e){ e.preventDefault();}, false);document.getElementById('list5').addEventListener('touchend',function(e){ e.preventDefault();}, false);

問題3:長按閃退的問題

情景還原

有一個XXX列表頁,長按列表頁的列表項時(觸摸到文字),在低版本手機中會出現閃退的情況

解決方法

js部分:在事件觸發時添加e.preventDefault();,用于阻止默認行為

css部分:添加禁止文本文本復制的代碼

代碼

//js部分:e.preventDefault();//css部分:-webkit-touch-callout: none; //解決閃退//禁止復制-moz-user-select: none;-khtml-user-select: none;user-select: none;

問題4: 移動端1px的問題

問題描述

由于不同的手機有不同的像素密度,css中的1px并不等于移動設備的1px。項目中使用js和rem做移動端的屏幕適配,所以產生0.5px的情況,導致低版本的手機展示不了0.5px的邊框。

解決方法

使用css解決1px的問題,并且給需要設置成1px的dom元素直接寫上:border-width:1px;

代碼

//HTML部分:<div class='class1'></div>//css部分:.class1{ border: 1px solid #ccc;}//css部分/*移動端正常展示1px的問題 start*/%border-1px{    display: block;    position:absolute;    left: 0;    width: 100%;    content: ' ';}.border-1px{    position: relative;    &::after{        @extend %border-1px;        bottom: 0;        border-top: 1px solid #ccc;    }    &::before{        @extend %border-1px;        top: 0;        border-bottom: 1px solid #ccc;    }}@media (-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5){    .border-1px{        &::after{            -webkit-transform: scaleY(0.7);            transform: scaleY(0.7);        }    }}@media (-webkit-min-device-pixel-ratio:2),(min-device-pixel-ratio:2){    .border-1px{        &::after{            -webkit-transform: scaleY(0.5);            transform: scaleY(0.5);        }    }}/*移動端正常展示1px的問題 end*/

問題5:js無法正確解析到url包含"="號的參數值

問題描述

項目中,由于數據請求的參數值是從url地址中獲取的參數值,并且參數值包含"="號,導致無法正確解析到參數值(ps:js使用"="號分割url的參數)

解決方法

將url進行轉碼,再解碼【本項目中,APP端提供轉碼后的url地址,前端使用geturlparams插件,獲得url地址的參數值】

代碼

//解碼"="號dom.token = decodeURI($.query.get("token"));//插件//獲取無需解碼的值dom.msgid = $.query.get("msgid");

問題6:原生js的事件監聽和jquery的事件綁定在ios中失效

問題描述

使用事件監聽或事件綁定時,由于父元素選擇body或document元素,導致在ios中事件觸發無效

解決方法

不使用body和document元素作為父級元素

問題7:ios中日期顯示為NaN

問題描述

Date的日期格式,在ios中有兼容性問題,ios的日期會顯示成:NaN

解決方法

解決方法:在ios中支持"2017/12/26 19:36:00",而不支持"2017-12-26 19:36:00"格式,后面一種格式,在ios中顯示Nan (Android中都可以顯示正常)

代碼

var time = "2017-12-26 19:36:00";time = time.replace(//-/g, "/");//將時間格式的'-'轉成'/'形式,兼容iOS

問題8:click事件在ios中有問題

問題描述

click事件在ios點擊觸發時,會選中事件委托的父級元素模塊【即:由于事件冒泡,并且父級有默認樣式】,并且有一個透明層,例如

<ul> <li>列表項1</li> <li>列表項2</li> <li>列表項3</li></ul>

解析:例如ios用戶點擊"列表項1"時,父層的ul會有一個透明的樣式

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平塘县| 盖州市| 玛曲县| 晋城| 凤阳县| 谷城县| 贵溪市| 黔西| 宁蒗| 黎平县| 雅安市| 泗水县| 桐城市| 普洱| 九龙坡区| 马山县| 界首市| 遵义县| 泰顺县| 莎车县| 沭阳县| 化州市| 曲水县| 阿城市| 上高县| 德阳市| 赣榆县| 同心县| 南宫市| 新津县| 南宁市| 洛隆县| 樟树市| 民勤县| 平利县| 汕尾市| 彭州市| 宾阳县| 密山市| 顺昌县| 临沭县|