開發(fā)bug記錄

1. 在chrome瀏覽器出現(xiàn)Uncaught SyntaxError: Unexpected token u

在chrome瀏覽器出現(xiàn) Uncaught SyntaxError: Unexpected token u 頁面一片空白 顯示不了,在Firefox正常

問題原因: 由于使用了localStorage ,會造成廢棄或者未定義的數(shù)據(jù),就是udefined,當使用Json.parse()解析值為udefined的Json數(shù)據(jù)時 chrome 就會拋出錯誤,而FireFox會返回正確的字符竄,

解決方法,使用LocalStorage.removeItem()把擁有undefined的數(shù)據(jù)清掉; 問題鏈接

2. new Date()對象的兼容性問題

chrome瀏覽器支持 “1990-08-10 15:20:10”的格式,其他瀏覽器不支持,統(tǒng)一支持的是new Date(2015,10,20,15,12),但是chrome得出的是正確的時間,而firefox與IE 的出的時間比正常的時間少了8個小時
chrom:

chrome獲取時間

fireFox:

firefox獲取時間

或許是時區(qū)的問題,但是可以使用valueOf()取它們的毫秒數(shù)是一樣的。所以還是老實的getDate,getHours、getMinute吧

jq.formatCommonTime = function(millisec, isSample) {
    var time = new Date();
    time.setTime(millisec || 0); //設置需要格式化的時間

    if (!!isSample) {
        return (time.getMonth() + 1) + '月' + time.getDate() + '日';
    }else{
        return time.getFullYear() + '年' + (time.getMonth() + 1) + '月' + time.getDate() + '日 ' + time.getHours() + ':' + ((time.getMinutes() < 10) ? "0" : "") + time.getMinutes();
    }
}
3、IE瀏覽器控制臺出現(xiàn) Exception in window.onload: Error: An error has ocurredJSPlugin.3005

原因是IE瀏覽器自身更新問題 只要下載補丁更新就好了補丁下載鏈接

4 、需要判斷出IE8瀏覽器
<!--[if lt IE 9]>
      .series em{
           text-align: right!important;
       }
<![endif]-->
//如果是因為其他原因使用不了,比如sass編譯會出錯,可以使用Jquery方法判斷
//判斷是否是IE8及以下
    var ie8 = $.support.leadingWhitespace;
    if(!ie8){
        $('em').addClass('ie8');
    }
5、Jquery 使用scroll()函數(shù)在IE8及以下出現(xiàn)問題

原因是監(jiān)聽的是document、或者body,只有改成window就可以了。

//滾動顯示側(cè)邊欄
$(window).scroll(function(){
        var scrollTop = $(document).scrollTop();
        if(scrollTop >= 630){
                $('.m-menu').show();
        }else{
                $('.m-menu').hide();
        }
});
6、在服務器上安裝 npm install的時候出現(xiàn)

npm WARN package.json methods@0.0.1No license field.
npm WARN package.json methods@0.0.1No repository field.
npm WARN package.json methods@0.0.1No readme data.

只要在package.json 里面加上

"repository":{"type":"git","url":"git://github.com/username/repository.git"}
or
{"name":"my-application","version":"0.0.1","private":true}

就可以了

7、移動端視頻播放支持

移動端不支持視頻自動播放,所以只好采用poster的方式,如果采用遮蓋一層封面的話,則需要點擊兩次才可以。
還有在安卓手機的微信,當切換page時(fullpage.js會出現(xiàn)),播放器會浮起,所以在離開當前頁面時把視頻remove掉,頁面加載時重新生成視頻。

但是好像iphone手機是支持自動播放的,但是偶爾又不行了。在安卓端如果把controls加上、autoplay去掉,基本可以播放,但是video標簽需要換一種格式來寫,也可能有些手機對視頻的格式有要求:

       if(b._$IS['android']){
            videoFlag = '<video width="100%" controls="controls" preload="auto"><source src="' + _vLink + '"><p>你的手機不支持video播放器</p></video>';
        }else{
            videoFlag = '<video width="100%" preload="auto" src="' + _vLink + '" autoplay="autoplay"></video>';
        }

 var videoFlag = '<video width="100%" controls="controls" preload="auto"><source src="' + _vLink + '">
<source src="https://broken-links.com/tests/media/BigBuck.webm" type="video/webm">
<source src="https://broken-links.com/tests/media/BigBuck.theora.ogv" type="video/ogg">
<p>你的手機不支持video播放器</p>
</video>';

8、隱藏元素的滾動條

#element::-webkit-scrollbar {display: none;}
      //If you want all scrollbars hidden, use
::-webkit-scrollbar {display: none;}
      // I'm not sure about restoring - this did work, but there might be a right way to do it:
 ::-webkit-scrollbar {display: block;}

overflow屬性設置的值為visible、scroll、hidden、auto

visible 默認值。使用該值時,無論設置的"width"和"height"的值是多少,其中的內(nèi)容無論是否超出范圍都將被強制顯示。
hidden 效果與visible相反。任何超出"width"和"height"的內(nèi)容都會不可見。
scroll 無論內(nèi)容是否超越范圍,都將顯示滾動條。
auto 當內(nèi)容超出范圍時,顯示滾動條,否則不顯示。
所以當div里面的內(nèi)容高度不固定時,如果超出高度就出現(xiàn)滾動條,如果高度不夠那就不出現(xiàn)滾動條,這個時候應該使用auto

9、移動端頁面上出現(xiàn)沒能適配整個屏幕

在移動端的頁面中,在chrome模擬調(diào)試時發(fā)現(xiàn)是完全可以適配屏幕的,但是到了其他瀏覽器以及微信上出現(xiàn)了頁面可以左右滾動的問題,檢查html,body,都沒有發(fā)現(xiàn)有元素溢出,一層層排查進來,發(fā)現(xiàn)是內(nèi)容區(qū)域的確有div溢出了,原因是寬度定為了屏幕寬度90%,需要居中,使用left:50%,margin-left:-25%;類似的方法,可能有些瀏覽器的渲染方式不一樣,才會出現(xiàn)這種問題

10、IE8不支持innerHTML的賦值,報未知運行錯誤。

在ie8中,可以看淡dom對象是有innerHTML屬性的,并且能獲取到innerHTML的值,但是呢,卻不能給innerHTML賦值, 比如說 domObj.innerHTML = "1"都不行。一番查找之后,發(fā)現(xiàn)innerHTML的確有這個問題,但是也只是局限于在tbody中不能用innerHTML插入tr或者是不能往inline元素插入block元素,但我的情況并不屬于這兩種。是網(wǎng)div里面插入div,實在搞不清楚原因,所以也只能另尋辦法了。就是使用createElement()生成節(jié)點,然后再appendChild()的方式解決ie8下的問題

    if(!eu._$ltIE10()){
          this.__serviceList.innerHTML = str;
     }else{
          e._$clearChildren(this.__serviceList);
          var _nodeList = e._$html2node(str);
          this.__serviceList.appendChild(_nodeList);
    }

    //html2node 方法的實現(xiàn)方式:

    _e._$html2node = function(_html){
        var _div = document.createElement('div');
        _div.innerHTML = _html;
        var _list = _e._$getChildren(_div);
        return _list.length>1?_div:_list[0];
    };

按照html2node的實現(xiàn)方式,其實ie8是支持innerHTML的,唯一可能不同的就是this.__serviceList 與_div;

11、ios點擊返回按鈕取緩存數(shù)據(jù)時候,如果接口返回的數(shù)據(jù)的key一樣,ios會以為這些數(shù)據(jù)都是同一份。

做的一個webView頁面時候,使用相同的key(原來只是wish_card,并沒有index),不同的課程id去請求數(shù)據(jù),然后以相同的key返回數(shù)據(jù),
頁面剛加載的時候,數(shù)據(jù)是正確的,但是隨便點擊一個課程卡片跳轉(zhuǎn)到詳情頁,然后再返回的時候頁面卻使用了同一份數(shù)據(jù)。

//初始化課程卡片
      $('.course-box').each(function(index, item) {
          var courseIds = $(item).attr('data-courseIds');
          if(!!courseIds){
              getCourseData(item, courseIds, index);
          }
      });

      function getCourseData (node, courseIds, index) {
         
          var cardInfo = '[{"key":"wish_card' + index + '","secKillFlag":0,"infos":' + courseIds + '}]';
          var _cardInfo = {jsonStr:cardInfo};
          var url ="http://study.163.com/promote2015Q3/getCourseInfos.htm";

          jq.post(url, _cardInfo, cbGetCourseData, 'json');

          function cbGetCourseData (data) {
             
              var options = {
                  showCart: false,
                  showCount: true,
                  showDesc: false,
                  showLector: true,
                  type: 2,
                  gaPrefix:"",
                  data: data['wish_card' + index]
              };

              $(node).courseCard(options);
          }
      }

返回的數(shù)據(jù)類型:{"wish_card4":[{"productId":1278001,"productName":"????”????è???-
初步判斷是ios讀取緩存的問題,因為用fiddler抓包,返回的時候并沒有重新發(fā)出請求。那么因為是取的同一份數(shù)據(jù),那么應該會是因為ios判斷這些數(shù)據(jù)都是同一份,
js代碼里面唯一能讓ios產(chǎn)生混淆的應該是key的問題了,于是給key加了index,然后就解決了

13、firefox 與chrome 獲取html 文檔的方式不一樣
當獲取頁面的窗口進行頁面滾動時,chrome、ie、safari使用的是document.body,而firefox取的是document.documentElement,所以可以選擇使用這樣的方式解決兼容性問題

 var docBody = document.body || document.documentElement;(可以取window 比如$(window))

//我的獎勵明細
$('#j-myDetail').click(function(){
 //fireFox 中document.body.scrollTop 永遠等于0、
//chrome中document.documentElement.scrollTop 永遠為0,
//但是因為頁面剛加載完scrollTop都是0  所以無法使用這個來判斷,所以暫時還是判斷UA
    var docBody = (ua.indexOf('firefox') != -1) ? document.documentElement : document.body;
            $(docBody).animate({scrollTop: $('.l-m-sharelist').offset().top},200,function(){
                  $('#j-openList').addClass('open');
                  $('#j-dataList').slideDown(10,function(){}).addClass('hasOpen');
             });
     });
14、服務器端記錄的cookie需要帶上domain、path才能清掉
//如果服務器端記錄cookie,那么一般都是記在根域名、根目錄下、比如study記的cookie
domain: .study.163.com     path:  /

//那么在專題頁面清除cookie的時候,是path不一樣,專題的path /topics/sales,所以是刪除不了的
$.removeCookie('inviteFromSpringsales'); 

//改成
$.removeCookie('inviteFromSpringsales',{path:'/',domain:'study.163.com'});
15、javascript中的深拷貝和淺拷貝

其實深拷貝與淺拷貝的最終得到的結(jié)果都一樣的,只是淺拷貝出來的新對象與元對象指向同一個內(nèi)存地址,改變?nèi)魏我粋€都會影響到另一個對象。而深拷貝則是把數(shù)據(jù)拷貝出來放到新的內(nèi)存地址,兩個對象的數(shù)據(jù)不會影響

//淺拷貝:
var obj1 = {  a:1,  b:{ c:2 }};
var obj2 = obj1;
console.log(obj2); //{  a:1,  b:{ c:2 }};

obj2.b.c = 3;
console.log(obj1) //{  a:1,  b:{ c:3 }};
//obj1的值也改變了
//深拷貝:
var obj1 ={a:1,b:{c:2}};
 function deepCopy(_originObj){
  if(_originObj==null)return null;
  if(typeof _originObj !== "object"){
            return _originObj;
        }
        var _clone = {};
  
        if(_originObj.constructor == Array){
            _clone = [];
        }
  
        for(var i in _originObj){  
            _clone[i] = arguments.callee(_originObj[i]);
        }
        return _clone; 
 }
var obj2 = deepCopy(obj1);
console.log(obj2); //{a:1,b:{c:2}}

obj2.b.c = 3;
console.log(obj1); //{a:1,b:{c:2}}
//obj1并不會被改變
16、使用Object.prototype.toString.call(_data).toLowerCase()=='[object '+_type+']'; 判斷一個變量的數(shù)據(jù)類型

(1) 在toString方法被調(diào)用時,會執(zhí)行下面的操作步驟:
(2) 如果this的值為undefined,則返回"[object Undefined]".
(3) 如果this的值為null,則返回"[object Null]".
(4) 讓O成為調(diào)用ToObject(this)的結(jié)果.
(5) 讓class成為O的內(nèi)部屬性[[Class]]的值.
(6) 返回三個字符串"[object ", class, 以及 "]"連接后的新字符串.

    var _isTypeOf = function(_data,_type){
        try{
            _type = _type.toLowerCase();
            if (_data===null) return _type=='null';
            if (_data===undefined) return _type=='undefined';
            return Object.prototype.toString.call(_data).toLowerCase()=='[object '+_type+']';
        }catch(e){
            return !1;
        }
    };
16、文件上傳獲取判斷文件的尺寸大小

判斷文件的width and height 、_URL方法只支持現(xiàn)代瀏覽器,移動端未測試過,使用的時候會出現(xiàn)一個問題,img.onload方法并不會阻塞js的執(zhí)行,所以需要使用圖片大小判斷的后續(xù)代碼,只能放到onload方法中執(zhí)行。
方法一: 只需要獲取input:file 框就可以

try{
    var _URL = window.URL || window.webkitURL,
        img = new Image();
    img.onload = function(){
        console.log(this.width + '*' + this.height);
        if(this.width < 800 || this.height < 300){
            that.errorTips('圖片大小不能小于800*300哦');
            uploadPro.__resetFile();
            return false;
        }
        that.filename = _fileName;
        return true;
    }
    img.src = _URL.createObjectURL(this.__realUpload.files[0]);
}catch(e){
    console.log('can not get image width and height');
}

方法二: 需要獲得圖片的url

var img = new Image();
img.onload = function(){
    console.log(this.width + '*' + this.height);
    if(this.width < 600 || this.height < 300){
        mUploadErrorTips('圖片大小不能小于600*300哦');
        $('#j-selectFile').css({'display':'block'});
        $('.filename').html('');
        $('#j-reselectBox').css({'display':'none'});
        return false;
    }else{
        saveData();
    }
}
img.src = _data.originPhotoUrl;
17、一些奇奇怪怪的bug

(1) 一些情況下對非可點擊元素監(jiān)聽click事件,ios下不會觸發(fā),css增加cursor:pointer就搞定了。當然想要干脆靜止點擊就是not-allowed。
(2) qq瀏覽,uc瀏覽以及ios的瀏覽器,滾動時不會觸發(fā)scroll事件,但會觸發(fā)touchmove。當停止?jié)L動后會出發(fā)scroll。
(3) -webkit-tap-highlight-color可以取消點擊高亮。
(4) android4.4以下版本,設置圓角屬性需要在直接元素上,向父元素設置圓角并且指定overflow:hidden是不會生效的。

18、關于微信屏幕支付寶支付的解決方案

因為考拉那邊在微信中可以使用微信支付,經(jīng)過抓包分析發(fā)現(xiàn),微信屏蔽是根據(jù)當前頁面的鏈接來的,當webView頁面加載完畢之后,
(1) 微信發(fā)現(xiàn)當前頁面的鏈接如果是阿里的鏈接,那么就會跳轉(zhuǎn)到另外一個頁面。
(2) 解決方案是在自己的域名下的文件嵌套一個iframe,然后使用iframe加載支付寶的頁面就ok了,
(3) 因為微信app里面監(jiān)聽不到iframe加載完畢的事件,也就無法判斷iframe加載的頁面。

主要邏輯:
在支付頁面,前端會把支付物品信息通過form表單通過iframe提交給后端,然后后端把物品的信息編碼成一個鏈接然后redirect到阿里的支付頁面,然后在iframe中這個鏈接會跳轉(zhuǎn)到阿里的支付頁面,正常情況下這樣就結(jié)束了。

但是為了解決按返回按鈕后的復雜操作,所以決定新開一個頁面進行提交,所以并不需要后端直接跳轉(zhuǎn),而是先跳轉(zhuǎn)到一個新的頁面并把支付鏈接回填回來。

然后前端拿到支付鏈接之后,把鏈接賦值到iframe中,那么iframe就會跳轉(zhuǎn)到支付寶的支付頁面,就可以了。
但是前端給siframe的src賦值時,出現(xiàn)了一個refused display page 'http://study.163.com/xxx', because x-frame-sameorigin 的錯誤,頁面顯示不出來,
原因是前端不能手動給iframe設置與父頁面相同域名的鏈接?,所以只好叫后端跳轉(zhuǎn)了。

payOrder.ftl 提交物品信息給后端

<form action="/pay/orderRedirectPage.htm" name="payForm" id="payForm">
    <input type="hidden" name="orderUrl" id="toPayUrl"/>
</form>

后端跳轉(zhuǎn)到 alipayOrder.ftl 并回填支付鏈接

<body style="min-height:520px;margin:0;padding:0;background-color:#f5f5f9;">
<!-- 頂部導航欄 -->
<div class="g-content" style="min-height:520px;">
   
    <iframe src="" style="min-height:520px;" id="j-alipay" name="alipay" src="" style="border:none;" width="100%" height="100%"></iframe>
    <form action="/pay/mobileAlipay.htm" name="payForm" id="payForm" target="alipay">
        <input type="hidden" name="orderUrl" id="toPayUrl"/>
        <input type="hidden" name="redirectToAlipay" value="true" id="toPayUrl"/>
    </form>
</div>
<!-- @NOPARSE -->
<script>
    <#if orderUrl?exists>window.orderUrl = "${orderUrl?html}";</#if>
    if(!!window.orderUrl){
        document.getElementById('toPayUrl').value = window.orderUrl;
        console.log(window.orderUrl);
        document.forms[0].submit();
    }
</script>
<!-- /@NOPARSE -->

alipayOrder.ftl 獲取到支付鏈接再構(gòu)造一個表單通過iframe提交給后端,然后后端直接進行跳轉(zhuǎn),那么iframe里面就可以跳轉(zhuǎn)到支付寶支付頁面了。

19、在ios微信瀏覽器中出現(xiàn)fixed定位低z-index元素覆蓋在absolute定位高z-index元素上面

在微信瀏覽器中,首先要彈出一個框,點擊這個彈框的一個按鈕之后,如果保存成功,就會關閉當前彈框,然后再彈出另一個框,然后就出現(xiàn)了cover層覆蓋在了彈框上面

結(jié)構(gòu)以及樣式如下
蒙層樣式

div.m-com-mask {
    z-index: 1000;
    background-color: #3b3b3b;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 100%;
    opacity: 0.75;
    filter: alpha(opacity=75);
}

彈窗樣式

div.m-winmark {
    position: absolute;
    z-index: 4001;
    top: 886.5px;
    left: 47px;
    border: 1px solid #BABECB;
    background: #ffffff;
    color: #444;
    box-shadow: 0px 3px 14px #aaa;
    -webkit-box-shadow: 0px 3px 14px #aaa;
}

html結(jié)構(gòu)

<div class="auto-1464943864173 m-com-mask"> </div>
<div class="auto-1464943864174 m-basewin" style="top: 886.5px; left: 47px;">
  <div class="zbar" id="auto-id-1464943864232">
      <div class="icon ic4"></div>
      <div class="cnt cntnom">關注成功!</div>
  </div>
  <span class="zcls" title="關閉" id="auto-id-1464943864231">×</span>
</div>

其實簡單的說就是兩個兄弟元素A、B,A是fixed定位但是層級z-index低,B是absolute定位但是層級高,按正常情況B是覆蓋在A前面的,但是在微信瀏覽器情況確實A覆蓋在B的前面,但是更奇葩的是,就算A覆蓋在B的前面了,還是可以點到B的。結(jié)果就是以下


Paste_Image.png

但是如果點擊確認,沒有關閉下面的彈框的話,那么是正常的,比如這樣

Paste_Image.png

同樣的操作,同樣的彈框,只是是否把底下的彈框remove掉,就會出現(xiàn)這樣的問題,所以可能就是下面的彈框remove的問題?嘗試使用了transform:translate3d(0, 0, 0)也沒解決。后來還是沒找到原因,最后因為是在移動端,所以只能暫時也把彈框的定位改成fixed再居中把原有的定位覆蓋就沒有問題了。

body div.m-basewin {
    position: fixed!important;
    top: 50%!important;
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
}
20、在iphone5s版微信中,flex布局不起作用

由于flex有新老版本的問題,iphone5沒有更新flex的寫法,所以還是加上老的寫法就解決了

    ul{
        display: -webkit-box;      /* OLD - iOS 6-, Safari 3.1-6 */
         display: -moz-box;         /* OLD - Firefox 19- (buggy but mostly works) */
         display: -ms-flexbox;      /* TWEENER - IE 10 */
         display: -webkit-flex;     /* NEW - Chrome */
        background-color: #f2f4f7;
        height: 100%;
    }

    li{
        -webkit-box-flex:1;
        -webkit-flex:1;
        flex: 1;
        text-align: center;
    }
21、使用fs.readFileSync()讀取文件,打包之后中文亂碼

使用browserify打包html模板文件,需要用到fs.readFileSync()方法,在編輯器中明確顯示是utf-8編碼,但是打包后的文件中文亂碼。我用的控制臺是powerShell,但是使用git bash打包是正常的。原因是控制臺的編碼跟文件編碼不一致導致的。所以只要更改控制臺的編碼就可以了,解決方法:
中文編碼號(GB2312): 936
utf8: 65001

  • 運行cmd
  • 輸入chcp,查看當前的控制臺的編碼
  • 輸入chcp 65001,回車,控制臺的編碼就被設置成了utf8的編碼
  • 打包之后,中文就不會亂發(fā)了

詳細參考

22、在異步請求回調(diào)函數(shù)中新打開頁面或者提交form表單被瀏覽器攔截

在平常需要做的一些操作可能是需要先發(fā)一個請求給后端,在返回的結(jié)果做判斷之后做一些操作,但是最近發(fā)現(xiàn)在異步請求回調(diào)中打開新窗口或者提交form表單新打開窗口都會被瀏覽器攔截。因為瀏覽器會認為這個是不安全的操作(比如廣告之類的)。
解決方法是把異步請求變?yōu)橥秸埱?,發(fā)請求之后阻斷瀏覽器,回調(diào)之后打開窗口,然瀏覽器認為這兩個操作是同一個操作就可以了?;蛘呤钱惒秸埱蠡卣{(diào)之后拋出一個事件,然后結(jié)束。在回調(diào)外面監(jiān)聽拋出的事件,然后新打開窗口。

23、使用browserify、gulp打包之后會出現(xiàn)在每個字符之間多了一個NUL

為了從gulp打包過度到browserify打包方式,先用browserify把js根據(jù)依賴來打包出一個js文件。然后使用gulp把打包出來的js與html再打包成一個html文件。打包出來的html文件出現(xiàn)了亂碼

Paste_Image.png

原因是兩次打包用的編碼不一樣。還是用的powershell,就是設置了utf8編碼,好像打包出來的是uft-16 with BOM的,所以經(jīng)過gulp再次打包之后就會出現(xiàn)這種情況。所以還是找個cmd編碼的統(tǒng)一的。比如git bash打包出來就沒有問題。

24、 css3 兼容性寫法

// flex

ul {
  display: -webkit-box;      /* OLD - iOS 6-, Safari 3.1-6 */
  display: -moz-box;         /* OLD - Firefox 19- (buggy but mostly works) */
  display: -ms-flexbox;      /* TWEENER - IE 10 */
  display: -webkit-flex;     /* NEW - Chrome */
  display: flex;             /* NEW, Spec - Opera 12.1, Firefox 20+ */
 }

li {
  -webkit-box-flex: 1;      /* OLD - iOS 6-, Safari 3.1-6 */
  -moz-box-flex: 1;         /* OLD - Firefox 19- */
  width: 20%;               /* For old syntax, otherwise collapses. */
  -webkit-flex: 1;          /* Chrome */
  -ms-flex: 1;              /* IE 10 */
  flex: 1;                  /* NEW, Spec - Opera 12.1, Firefox 20+ */
}

// transform

    transform: translate(-50%,-50%);
    -ms-transform: translate(-50%,-50%);
    -webkit-transform: translate(-50%,-50%);
    -o-transform: translate(-50%,-50%);
    -moz-transform: translate(-50%,-50%);
25、css min-width屬性不認auto值,且選擇器權(quán)重無效。

使用web端的組件,需要覆蓋一些樣式,在iphone及一些瀏覽器沒有問題,但是在某些安卓手機上,發(fā)現(xiàn)盡管權(quán)重已經(jīng)比之前的大,但是不起作用。調(diào)試發(fā)現(xiàn),需要覆蓋掉的min-width屬性的值設置為auto不起作用,查看w3c發(fā)現(xiàn)min-width的值沒有auto,所以才會出現(xiàn)問題,改為0就好了,選擇器權(quán)重的問題,不知道什么問題,加!important就好了

26、解決點擊瀏覽器返回按鈕不刷新文件,請求頭出現(xiàn)provisional headers are shown問題

點擊瀏覽器返回按鈕之后,瀏覽器會從緩存里面讀取上一個頁面的頁面數(shù)據(jù),如果此時需要實時更新則會出現(xiàn)問題問題,比如前后兩次后端在html中不一樣的情況,出現(xiàn)這樣的情況可以讓后端返回html時帶上cache-control緩存頭,讓瀏覽器點擊返回按鈕時,強制去服務器請求新的頁面。

以上問題出現(xiàn)常見的現(xiàn)象是request headers出現(xiàn)provisional headers are shown,解釋如下

之所以會出現(xiàn)這個警告,是因為去獲取該資源的請求其實并(還)沒有真的發(fā)生,所以 Header 里顯示的是偽
信息,直到服務器真的有響應返回,這里的 Header 信息才會被更新為真實的。不過這一切也可能不會發(fā)生,
因為該請求可能會被屏蔽。比如說 AdBlock 什么的,當然了不全是瀏覽器擴展,具體情況具體分析了

當然,如果導致出現(xiàn)provisional headers are shown這個信息的問題有很多,具體參考這篇文章provisional headers are shown

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,167評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,632評論 19 139
  • 本店銷售墻紙壁畫,零售批發(fā)與施工,主打產(chǎn)品高中擋液體壁紙,硅藻泥,大型無縫壁畫,天鵝絨墻衣,真石漆,專業(yè)培訓液體壁...
    錦幻液體壁紙閱讀 737評論 0 0
  • 7文|大雄DX (一) 在很小的時候,我便對文字感興趣,確切的講,應該是語文。我想,這可能就是我的天賦,不需要后天...
    但見歸去來閱讀 1,131評論 45 39
  • 酒喝多了,回憶也藏不住了,如果真的有時光機,或者時光能重來,我寧愿沒有這荒唐的26歲,明知道怎樣做正確,卻控制不了
    花鏡小斯閱讀 329評論 0 0

友情鏈接更多精彩內(nèi)容