ios10以下safari設(shè)置style無(wú)效的解決方法
項(xiàng)目中遇到的奇怪問(wèn)題,已定位原因。Attempted to assign to readonly property報(bào)錯(cuò)
起因:項(xiàng)目中寫(xiě)了個(gè)點(diǎn)擊事件,增加動(dòng)態(tài)效果,類(lèi)似于轉(zhuǎn)一轉(zhuǎn),rotate(360)。很簡(jiǎn)單的一個(gè)特效。
設(shè)置元素的transition:transform 1s。 然后動(dòng)態(tài)改變?cè)氐膖ransfrom:rotate的角度。一切看起來(lái)沒(méi)問(wèn)題。本地測(cè)試,真機(jī)測(cè)試都OK。但是提測(cè)后,在測(cè)試的IOS10下的safari,竟然沒(méi)有生效。
定位原因: 一開(kāi)始以為是transform沒(méi)有加上前綴。但確認(rèn)后排除。于是真機(jī)連接代理測(cè)試,在點(diǎn)擊事件中alert彈窗,發(fā)現(xiàn)并沒(méi)有執(zhí)行。于是確認(rèn)有報(bào)錯(cuò)。try catch后彈出錯(cuò)誤。
Attempted to assign to readonly property
查閱資料得知,是safari內(nèi)核bug。網(wǎng)上有解決方案,不要使用嚴(yán)格模式,即刪除'use strict'。
(沒(méi)有驗(yàn)證,因?yàn)橛X(jué)得不可行,因小失大)
解決方案。 猜測(cè)是因?yàn)镾tyle不可以直接change,但應(yīng)該可以設(shè)置Style.transform。測(cè)試可行,但這樣設(shè)置多個(gè)屬性的時(shí)候,并不優(yōu)雅,可換成class。 不過(guò)因?yàn)閞otate角度涉及到計(jì)算,故而本人并沒(méi)有采用設(shè)置class的方案。
錯(cuò)誤: dom.style = `transform: rotate(${x}deg)`;
正確 dom.style.transfrom = 'rotate(${x}deg)';
PS:解決iOS10的Safari下Meta設(shè)置user-scalable=no無(wú)效的方法
蘋(píng)果為了提高Safari中網(wǎng)站的輔助功能,屏蔽了Meta下的user-scalable=no功能。所以在iOS10下面,就算加上user-scalable=no,Safari瀏覽器也能支持手動(dòng)縮放。
我們可以用js加監(jiān)聽(tīng)事件來(lái)阻止手動(dòng)縮放。
代碼如下:
window.onload=function () { document.addEventListener('touchstart',function (event) { if(event.touches.length>1){ event.preventDefault(); } }) var lastTouchEnd=0; document.addEventListener('touchend',function (event) { var now=(new Date()).getTime(); if(now-lastTouchEnd<=300){ event.preventDefault(); } lastTouchEnd=now; },false) }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ios實(shí)現(xiàn)底部PopupWindow的示例代碼(底部彈出菜單)
這篇文章主要介紹了ios實(shí)現(xiàn)底部PopupWindow的示例代碼(底部彈出菜單),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01談?wù)劄楹蝘OS開(kāi)發(fā)別用宏來(lái)定義常量
最近在工程里看到很多不規(guī)范的使用,于是來(lái)寫(xiě)一篇博客來(lái)讓不是很清楚的小朋友們,使用正確的規(guī)范開(kāi)發(fā)ios,少埋點(diǎn)坑。2016-08-08iOS開(kāi)發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼)
這篇文章主要介紹了iOS開(kāi)發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼)的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-10-10IOS開(kāi)發(fā)之手勢(shì)響應(yīng)事件優(yōu)先級(jí)的實(shí)例詳解
這篇文章主要介紹了IOS開(kāi)發(fā)之手勢(shì)響應(yīng)事件優(yōu)先級(jí)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能夠掌握手勢(shì)響應(yīng)優(yōu)先級(jí)的使用方法,需要的朋友可以參考下2017-09-09詳解iOS應(yīng)用程序的啟動(dòng)過(guò)程
這篇文章主要介紹了iOS應(yīng)用程序的啟動(dòng)過(guò)程,講述了從其執(zhí)行main函數(shù)開(kāi)始到展示UIWindow的流程中的一些關(guān)鍵點(diǎn),需要的朋友可以參考下2016-03-03iOS開(kāi)發(fā)中控制屏幕旋轉(zhuǎn)的編寫(xiě)方法小結(jié)
這篇文章主要介紹了iOS開(kāi)發(fā)中控制屏幕旋轉(zhuǎn)的編寫(xiě)方法小結(jié),包括橫豎屏切換時(shí)視圖所出現(xiàn)的問(wèn)題等經(jīng)常需要注意的地方,需要的朋友可以參考下2015-10-10