前端開發中遇到的一些問題----持續更新

stardew發表於2019-04-29
頁面兩個標籤(非block樣式)之間有一個小margin,樣式怎麼改都去不掉

解決:html中標籤換行了,把兩個標籤放到同一行可以解決,還有一種好辦法就是使用flex。

app上點選有背景

解決:全域性新增樣式-webkit-tap-highlight-color: rgba(255, 255, 255, 0);

手機端input邊框陰影

解決:新增-webkit-appearance: none;

chrome模擬器裡點選元素錯位

解決:我把百分比改成fit to window 好了,也可以來回切換幾次機型。
clipboard.png

git push 報錯RPC failed; curl 55 SSLWrite() returned error -9805

解決:一次性提交程式碼太多導致,使用git log找到最近一次commit的程式碼,git reset {id}回退到commit前的狀態,再分批次提交。

程式碼丟失,git log找不到

解決:git reset --hard xxx的記錄,使用git reflog

sudo nginx -s reload啟動nginx報錯:nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)

解決:sudo nginx -c /usr/local/etc/nginx/nginx.conf => sudo nginx -s reload

input中type為number時maxlength失效

解決:input type="tel"

微信授權callback有多個引數,出現丟失的情況。

解決:因為授權介面中&的多個引數會變成整個介面地址的引數,所以需要對&進行加密,使用var callbackurl = encodeURIComponent(window.location.href)進行加密

滾動不順暢

解決:新增樣式

-webkit-overflow-scrolling: touch;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
事件冒泡

解決: stopPropagation,cancelBubble(ie)

移入移出多次觸發

解決: mouseleave 對子元素不生效,不會冒泡

安裝navicat,完成後提示檔案損壞

解決: 開啟終端,輸入sudo spctl --master-disable

docsify配置的搜尋功能失效

解決:回到文件首頁(文件根目錄),開啟控制皮膚,找到localstorage,刪除docsify.search.index和docsify.search.expires,重新整理頁面。

textarea裡輸入的換行、空格直接存到所需樣式的div裡時,沒效果。

解決:轉義一下,空格替換成&nbsp;換行rn換為<br>,template裡使用{{{}}}而非{{}}解析。

nl2br: function (str, idx, tag, isXhtml) {
  let blankTag = '&nbsp;'
  let breakTag = (isXhtml || typeof isXhtml === 'undefined') ? '<br />' : '<br>'
  let newStr = (str + '').replace(/([^>\s]?)(\s)/g, '$1' + blankTag + '$2')
  newStr = (newStr + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2')
  if (tag) {
    this.changeData[idx][tag] = newStr
  }
  return newStr
}

還可直接新增樣式white-space: pre-wrap;

html2canvas畫出來的圖片模糊

解決:只要這個html整體放大一倍,圖片再縮小一倍就可以解決了

html2canvas把html頁面存成圖片時,圖片不全

解決:先記錄當前scrollTop值,window.scrollTo(0,0)到頂部,然後畫圖,就可以解決了,完了再回到原來的scroll位置 。

git拉取程式碼報錯:Permission denied (publickey)

解決:

j .ssh
git config --global user.name "***"
git config --global user.email "***@163.com"
ssh-keygen -t rsa -C "***@163.com"

拷貝:id_rsa.pub
放到 https://git.oschina.net/keys 的ssh裡

點選事件失效

解決:使用css pointer-events: none;直接穿透當前div

類似微信,左滑動出現當前li的一些操作mask,touchmove在手機上失效

解決:在touchmove裡使用一個閾值,Math.abs(endY-startY) 是否大於10,來決定是否preventDefault。

webpack 打包時, No ESLint configuration found

解決:專案中缺少.eslintrc.js檔案,手動在根目錄新增上。

七牛圖片上傳,下載檔名改名稱

解決:普通的a標籤下載,只需要在後面加上download=“1223”。七牛上是在href連結後面新增“?download/name”

new Vue時報錯error Do not use 'new' for side effects

解決:報錯內容上方新增 / eslint-disable no-new /

h5獲取地理位置資訊時,使用者第一次拒絕,後面一直都彈窗使用者拒絕資訊。

解決:android,設定-》應用程式管理器-》網際網路(自帶或安裝的其他瀏覽器)-》許可權-》位置資訊(重啟此開關)

新建js程式碼經常報錯import declarations not support by current javascript version

解決:webstorm =》perference =》languages & frameworks =》javascript =》右側選擇ecmascript6

android微信裡播放video,播放完了以後,關閉之後,video一直處在最頂層,z-index失效。

解決: 網上很多地方都沒有找到答案,官網上說是無解的,走了個小彎路。關閉video時,把當前video存一下,然後找到父級,刪除video再給父級innerHTML video 問題大致解決,目前只想到了這麼個方法。

let thisNode = this
let parentNode = thisNode.parentNode
parentNode.removeChild(this)
parentNode.innerHTML = thisNode.outerHTML
chrome瀏覽器除錯的時候,chrome://inspect連線手機之後,一片空白

解決:因為chrome除錯之初需要連chrome伺服器,所以存在翻牆問題,翻牆後就可以檢視dom了

mysql連線報錯:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解決:系統偏好設定-》最下面mysql-》進入-》點選initialize database-》輸入密碼,連解時也輸入這個密碼。

mysql連線池錯誤:Client does not support authentication protocol requested by server; consider upgrading MySQL client

解決:navicat 新建查詢輸入:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼'

提取出來的頭部,點選開啟遮罩層,滾動時,底部跟著滾動。

解決:監聽遮罩層狀態,body位置改為fixed,此時每次關閉遮罩層時,頁面都回到最頂部,是因為fixed脫離了文件流,所以應該先記錄當前位置,position置為static時再定位到原先位置。程式碼如下:

  status (status) {
    if (status === 'open') {
      this.scrollY = window.scrollY
    }
    document.body.style.position = status === 'close' ? 'static' : 'fixed'
    window.scrollTo(0, this.scrollY)
  }

如果遮罩層的頁面只有一頁,且無需滾動的時候,只要禁用touchmove就可以了@touchmove.prevent,無需過多操作。

不同商品頁,id變化,商品不變

解決: 監聽$route變化,然後獲取id重新去取資料。

swiper外掛的輪播圖迴圈時,上面新增的點選事件失效

解決: 點選事件不繫結在swiper-slide上,新增在on中。原因是迴圈時,swiper複製了幾份swiper-slide,然而卻沒有複製它的事件,所以導致事件時而生效,時而失效,事實上,當swiper-slide在第一個時,右滑頁面,使其滾動到最後一個,這時點選失效必現。

  new Swiper('.first-block', {
    loop: true,
    paginationClickable: true,
    parallax: true,
    setWrapperSize: true,
    on: {
      click: function () {
        // 當前活動塊的索引,與activeIndex不同的是,在loop模式下不會將 複製的塊 的數量計算在內。
        const realIndex = this.realIndex
        vm.handleJumpe(vm.indexSwiperList[realIndex].href, {})
      }
    }
  })
火狐瀏覽器中,錨點連結失效。

解決:引起問題的原因是iframe。錨點連結放在iframe中,iframe + href 在火狐中不相容,解決辦法是判斷是否是火狐瀏覽器,如果是,計算錨點id距離頂部的距離,然後滾動到此id位置。

fixed + input聚焦引起的fixed失效,搜尋框跟隨頁面滾動了。

解決:在網上查到的大部分解決方案是分三部分,上中下,使用absolute定位,因為懶得改結構,找到一個簡單的解決辦法,touchmove的時候,input自動失去焦點。

<section @touchmove="handleTouchMove"></section>
handleTouchMove () {
  // 我是引用的search子元件
  this.$children[1].$refs.searchInput.blur()
}
sourcetree 遠端拉取的程式碼每次更新都需要輸入密碼

解決:開啟終端,到相應程式碼位置,輸入git config --global credential.helper store,然後提交一次程式碼,輸入使用者名稱密碼,之後再也不用重新輸入了。

相關文章