整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          網(wǎng)站不收錄怎么辦?5個(gè)方法幫你解決

          網(wǎng)站不收錄怎么辦?5個(gè)方法幫你解決

          于網(wǎng)站不收錄,需要分情況討論,

          比如:新站點(diǎn)不收錄、產(chǎn)品或者案例頁(yè)面不收錄、新發(fā)文章不收錄、欄目頁(yè)面不收錄、聚合頁(yè)面不收錄、當(dāng)天不收錄、一周或者一個(gè)月不收錄、網(wǎng)站被K、降權(quán)后恢復(fù)不收錄等。。。。。

          不同的情況需要不同的方法去應(yīng)對(duì)。

          今天科牛就結(jié)合自己的經(jīng)驗(yàn),分享下我處理這些問(wèn)題的心得。

          一、新站點(diǎn),一個(gè)月了還沒(méi)有收錄

          首先需要排除服務(wù)器訪問(wèn)慢、被人攻擊的情況,其次排除網(wǎng)站上有灰色、違規(guī)內(nèi)容,再者排除網(wǎng)站源代碼DIV+CSS的問(wèn)題。

          以上都沒(méi)問(wèn)題,那么就去發(fā)外鏈,最簡(jiǎn)單的,百度搜“超級(jí)外鏈工具”,這個(gè)是免費(fèi)的。

          如果覺(jué)得免費(fèi)的不夠,可以購(gòu)買付費(fèi)外鏈,幾十塊錢幾百條。

          然后再去換友鏈,一般情況下,你一個(gè)新站點(diǎn),沒(méi)收錄沒(méi)排名是很難換到高質(zhì)量的友鏈的,此時(shí),可以去添加一些友鏈交換的qq群,在群里找個(gè)大哥,給人發(fā)個(gè)紅包,讓人幫你掛幾天。

          當(dāng)然,也可以直接去百度搜索跟你同類型的網(wǎng)站,聯(lián)系對(duì)方站長(zhǎng),談好價(jià)格直接付費(fèi)購(gòu)買,這種方法雖然笨一點(diǎn),但交換來(lái)的友情鏈接質(zhì)量一般比較高,因?yàn)槿思矣信琶。?/span>

          如果以上工作都做了,最后還是沒(méi)有收錄,那么可以到百度站長(zhǎng)平臺(tái)提交反饋,請(qǐng)百度工作人員幫忙排查原因并放出首頁(yè)收錄。

          目前,根據(jù)科牛平時(shí)給客戶搭建的新網(wǎng)站案例來(lái)看,正常情況,新站點(diǎn)的首頁(yè)收錄時(shí)間一般在兩周到一個(gè)月之間,如果超過(guò)一個(gè)月還沒(méi)有收錄,大概率是有問(wèn)題了,如果你的外鏈、友鏈都做了,文章每天也按時(shí)發(fā)布,那么基本上可以判斷網(wǎng)站服務(wù)器、網(wǎng)站內(nèi)容、源代碼這三項(xiàng)中,必定有一個(gè)出問(wèn)題了,這時(shí)就需要進(jìn)一步深入排查了!

          二、企業(yè)站,已經(jīng)搭建了一段時(shí)間,首頁(yè)已收錄,但新發(fā)布的文章遲遲不收錄

          首先排查原因:

          網(wǎng)站是否有中途改版或更改首頁(yè)關(guān)鍵詞的情況,這一點(diǎn)是非常影響百度收錄的因素,盡量不要對(duì)網(wǎng)站進(jìn)行太大的改動(dòng),關(guān)鍵詞等在建站之初就應(yīng)該確定好。

          企業(yè)站,基本上都有一個(gè)通病,就是內(nèi)容一般都不持續(xù)更新或更新數(shù)量少,這也就導(dǎo)致百度抓取次數(shù)會(huì)比較低,抓取不及時(shí)就會(huì)導(dǎo)致收錄慢或不收錄。

          且企業(yè)站存在嚴(yán)重的內(nèi)容同質(zhì)化問(wèn)題,很多站點(diǎn)都是采集復(fù)制的內(nèi)容,文章原創(chuàng)度差。

          建議:

          企業(yè)站或者中小站長(zhǎng),首先要做到人工定時(shí)更新養(yǎng)站,比如日均5篇,內(nèi)容盡可能偽原創(chuàng)或原創(chuàng),風(fēng)雨無(wú)阻,有能力的話保證每個(gè)頁(yè)面或欄目頁(yè)做到內(nèi)容更新,這樣即可提升網(wǎng)站抓取的次數(shù)以及提升收錄速度。

          另外,一年以內(nèi)的新站點(diǎn),在第3個(gè)月到第7個(gè)月之間的某一段時(shí)間里,網(wǎng)站會(huì)有一個(gè)秒收期,就是在這段時(shí)間內(nèi),不論你的網(wǎng)站發(fā)布任何內(nèi)容都會(huì)秒收,這時(shí),配合上權(quán)重操作,是上排名的黃金期!

          過(guò)了這個(gè)黃金期之后,就會(huì)繼續(xù)出現(xiàn)不收錄的情況,原因是爬蟲低質(zhì)。

          此時(shí),還是老套路,花錢買外鏈、換友鏈,增加非首頁(yè)的頁(yè)面抓取頻次。

          3個(gè)月后,如果發(fā)現(xiàn)網(wǎng)站還是老樣子,不要慌,先去看網(wǎng)站索引,只要索引一直增長(zhǎng)就沒(méi)問(wèn)題,因?yàn)樗饕蔷W(wǎng)站收錄的根本,只要索引不掉,即使收錄掉了,過(guò)幾天必定也會(huì)漲上來(lái)。

          三、網(wǎng)站被降權(quán)、被K,內(nèi)容頁(yè)不收錄怎么辦?

          網(wǎng)站被k或降權(quán),首要需要找出降權(quán)的原因,且期間要保證網(wǎng)站能正常訪問(wèn),保證網(wǎng)站正常更新,及時(shí)提交新增加的鏈接。

          好好的站點(diǎn)被K被懲罰了,那肯定是自己的問(wèn)題,百度官方后臺(tái)是有記錄每一個(gè)站點(diǎn)是否懲罰過(guò)的,可以查看下具體是什么程度。

          首頁(yè)K了的話,請(qǐng)繼續(xù)通過(guò)內(nèi)容頁(yè)面補(bǔ)救,時(shí)間會(huì)很長(zhǎng);

          欄目或頻道頁(yè)被K了的話,請(qǐng)開(kāi)設(shè)其它欄目或二級(jí)域名補(bǔ)救,時(shí)間特長(zhǎng);

          全站被K了的話,我建議你放棄,更換其它域名吧;

          優(yōu)化網(wǎng)站還是要正規(guī)手法,不然代價(jià)都是很大的!

          網(wǎng)站被K或者降權(quán)的恢復(fù)周期,一般1個(gè)月起步,3-6個(gè)月是正常情況!

          四、網(wǎng)站新增加的聚合頁(yè)面不收錄、無(wú)排名

          聚合頁(yè)想要有收錄和排名,最常見(jiàn)的是標(biāo)簽tag做法,通過(guò)標(biāo)簽的超鏈接來(lái)增加聚合頁(yè)面的權(quán)重。

          分析過(guò)很多客戶的網(wǎng)站,科牛發(fā)現(xiàn),tag頁(yè)的收錄和排名一般都是優(yōu)于文章頁(yè)的。

          如果你的聚合頁(yè)面沒(méi)有收錄和排名,那么問(wèn)題可能在于:

          1、標(biāo)題的寫法存在問(wèn)題

          比如,tdk沒(méi)有設(shè)置好,標(biāo)題只有一個(gè)關(guān)鍵詞或者是幾個(gè)關(guān)鍵詞的堆疊,并沒(méi)有拓展及延伸其他的相關(guān)需求。

          2、聚合頁(yè)面的內(nèi)容相關(guān)程度低,內(nèi)容質(zhì)量少

          作為一個(gè)聚合頁(yè)面,一定是需要大量的文章內(nèi)容來(lái)支撐的,建議每個(gè)聚合頁(yè)面至少10條以上內(nèi)容,盡可能做到無(wú)空白頁(yè)面。

          3、網(wǎng)站自身權(quán)重低

          網(wǎng)站首頁(yè)都沒(méi)什么權(quán)重,次級(jí)的聚合頁(yè)面就更不用提了,建議適當(dāng)交換一些內(nèi)頁(yè)友情鏈接,最好是有相關(guān)性的,10個(gè)左右即可,不用太多!

          五、企業(yè)站分類欄目排名的seo優(yōu)化方法

          企業(yè)站的重心一般都會(huì)集中在產(chǎn)品列表頁(yè)面,但一般來(lái)說(shuō),產(chǎn)品列表頁(yè)面想要獲取比較大的流量是很困難的,因此可以直接把產(chǎn)品頁(yè)面設(shè)置到首頁(yè),因?yàn)槭醉?yè)的收錄會(huì)比欄目頁(yè)快很多,再配合上首頁(yè)的營(yíng)銷頁(yè)面,有助于更快的把產(chǎn)品關(guān)鍵詞排名上去,不過(guò)需要注意的是,首頁(yè)必須時(shí)刻保持更新!

          以上,就是在日常工作中給客戶解決問(wèn)題時(shí),科牛積累的一些經(jīng)驗(yàn)心得,希望能夠給廣大站長(zhǎng)或者seo從業(yè)人員一點(diǎn)幫助!

          今天就來(lái)聊聊在為了您更好的體驗(yàn),本文章聊聊如何僅支持谷歌瀏覽器訪問(wèn)查看頁(yè)面?這篇文章中提到的瀏覽器兼容問(wèn)題,以此篇文章來(lái)證明自己并非不了解瀏覽器兼容性問(wèn)題,而是當(dāng)時(shí)其他因素導(dǎo)致選擇了一刀切的方法來(lái)處理需求(我就是一個(gè)不粘鍋)。

          嘿,xdm~既然點(diǎn)進(jìn)來(lái)了,不妨就繼續(xù)看下去吧^_^

          概念

          所謂的瀏覽器兼容性問(wèn)題,是指因?yàn)椴煌臑g覽器對(duì)同一段代碼有不同的解析,造成頁(yè)面顯示效果不統(tǒng)一的情況

          上面的定義就是大白話,我們來(lái)看看來(lái)自百度百科的權(quán)威解釋:瀏覽器兼容性問(wèn)題又被稱為網(wǎng)頁(yè)兼容性或網(wǎng)站兼容性問(wèn)題,指網(wǎng)頁(yè)在各種瀏覽器上的顯示效果可能不一致而產(chǎn)生瀏覽器和網(wǎng)頁(yè)間的兼容問(wèn)題。在網(wǎng)站的設(shè)計(jì)和制作中,做好瀏覽器兼容,才能夠讓網(wǎng)站在不同的瀏覽器下都正常顯示。而對(duì)于瀏覽器軟件的開(kāi)發(fā)和設(shè)計(jì),瀏覽器對(duì)標(biāo)準(zhǔn)的更好兼容能夠給用戶更好的使用體驗(yàn)。

          產(chǎn)生的原因

          造成瀏覽器兼容性問(wèn)題的根本原因就是各瀏覽器使用了不同的內(nèi)核,并且它們處理同一件事情的時(shí)候思路不同。

          怎么理解上述文字?即:不同瀏覽器使用的內(nèi)核及所支持的HTML等網(wǎng)頁(yè)語(yǔ)言標(biāo)準(zhǔn)不同,以及用戶客戶端的環(huán)境不同(如分辨率不同)造成了顯示效果不能達(dá)到理想效果

          解決方法

          前端開(kāi)發(fā)經(jīng)常需要檢查瀏覽器的兼容性,這里推薦(Can I Use)這個(gè)查詢網(wǎng)站。它是一個(gè)針對(duì)前端開(kāi)發(fā)人員定制的一個(gè)查詢CSS、JS、HTML5、SVG在主流瀏覽器中特性和兼容性的網(wǎng)站,可以很好的保證網(wǎng)頁(yè)在瀏覽器中的兼容性。有了這個(gè)工具我們就可以快速地了解到代碼在各個(gè)瀏覽器中的兼容情況了,強(qiáng)烈推薦一波,大家趕緊去體驗(yàn)吧?!界面效果如下圖所示:

          工具只能給我們顯示查詢的特性在不同瀏覽器上的兼容情況,至于如何解決兼容問(wèn)題還得看下述的解決辦法→

          CSS兼容問(wèn)題

          1、不同瀏覽器的標(biāo)簽?zāi)J(rèn)的內(nèi)外邊距不同

          解決方案:*{margin: 0; padding: 0;}

          其實(shí)清除瀏覽器自帶的默認(rèn)樣式,每個(gè)前端開(kāi)發(fā)者所用的方法大同小異,這里給出我選用的清除默認(rèn)樣式的重置樣式代碼:

          /**
           * 該文件用于清除瀏覽器樣式
           */
          html, body, div, span, applet, object, iframe,
          h1, h2, h3, h4, h5, h6, p, blockquote, pre,
          a, abbr, acronym, address, big, cite, code,
          del, dfn, em, img, ins, kbd, q, s, samp,
          small, strike, strong, sub, sup, tt, var,
          b, u, i, center,
          dl, dt, dd, ol, ul, li,
          fieldset, form, label, legend,
          table, caption, tbody, tfoot, thead, tr, th, td,
          article, aside, canvas, details, embed,
          figure, figcaption, footer, header, hgroup,
          menu, nav, output, ruby, section, summary,
          time, mark, audio, video {
              padding:0;
              margin:0;
              border:0;
              outline: 0;
              font-family: "Helvetica Neue For Number", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
              word-wrap:break-word;
          }
          html, body {
              width: 100%;
              height: 100%;
          }
          a {
              text-decoration: none;
              -webkit-tap-highlight-color:rgba(255,255,255,0);
          }
          ul, ol {
              list-style-type: none;
          }
          textarea {
              resize: none;
          }
          /*去除input button默認(rèn)樣式*/
          input, button, textarea {
              -webkit-appearance: none;
              -webkit-tap-highlight-color: rgba(255, 225, 225, 0);
              padding: 0;
              border: 0;
              outline: 0;
          }
          // 修改placeholder屬性默認(rèn)文字顏色
          input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
              /* WebKit browsers */
              color: #999;
          }
          input:-moz-placeholder, textarea:-moz-placeholder {
              /* Mozilla Firefox 4 to 18 */
              color: #999;
          }
          input::-moz-placeholder, textarea::-moz-placeholder {
              /* Mozilla Firefox 19+ */
              color: #999;
          }
          input:-ms-input-placeholder, textarea:-ms-input-placeholder {
              /* Internet Explorer 10+ */
              color: #999;
          }

          除了自己定義清除默認(rèn)樣式的代碼,也可選擇引用別人寫好的成熟插件Normalize.css來(lái)清除默認(rèn)樣式;

          2、圖片加a標(biāo)簽在IE9中會(huì)有邊框

          解決方案:img{border: none;}

          3、IE6及更低版本浮動(dòng)元素,浮動(dòng)邊雙倍邊距

          解決方案:不使用margin,使用padding

          4、IE6及更低版本中,部分塊元素?fù)碛心J(rèn)高度

          解決方案:給元素設(shè)置font-size: 0;

          5、a標(biāo)簽藍(lán)色邊框

          解決方案:a{outline: none;}

          6、IE6不支持min-height屬性

          解決方案:{min-height: 200px; _height: 350px;}

          7、IE9以下瀏覽器不能使用opacity

          解決方案:Firefox/Chrome/Safari/Opera瀏覽器使用opacity;IE瀏覽器使用filter

          opacity: 0.7; /*FF chrome safari opera*/
          filter: alpha(opacity:70); /*用了ie濾鏡,可以兼容ie*/

          8、IE6/7不支持display:inline-block

          解決方案:{display: inline-block; *display: inline;}

          9、cursor兼容問(wèn)題

          解決方案:統(tǒng)一使用{cursor: pointer;}

          10、IE6/7中img標(biāo)簽與文字放一起時(shí),line-height失效的問(wèn)題

          解決方案:文字和<img>都設(shè)置float

          11、table寬度固定,td自動(dòng)換行

          解決方案:table設(shè)置 {table-layout: fixed},td設(shè)置 {word-wrap: break-word}

          12、相鄰元素設(shè)置margin邊距時(shí),margin將取最大值,舍棄小值

          解決方案:不讓邊距重疊,可以給子元素加一個(gè)父元素,并設(shè)置該父元素設(shè)置:{overflow: hidden}

          13、a標(biāo)簽css狀態(tài)的順序

          解決方案:按照l(shuí)ink--visited--hover--active的順序編寫

          14、IE6/7圖片下面有空隙的問(wèn)題

          解決方案:img{display: block;}

          15、ul標(biāo)簽在Firefox中默認(rèn)是有padding值的,而在IE中只有margin有值

          解決方案:ul{margin: 0;padding: 0;}

          16、IE中l(wèi)i指定高度后,出現(xiàn)排版錯(cuò)誤

          解決方案:設(shè)置line-height

          17、ul或li浮動(dòng)后,顯示在div外

          解決方案:清除浮動(dòng);須在ul標(biāo)簽后加<div style="clear:both"></div>來(lái)閉合外層div

          18、ul設(shè)置float后,在IE中margin將變大

          解決方案:ul{display: inline;},li{list-style-position: outside;}

          19、li中內(nèi)容超過(guò)長(zhǎng)度時(shí),用省略號(hào)顯示

          li{
              width: 200px;
              white-space: nowrap;
              text-overflow: ellipsis;
              -o-text-overflow: ellipsis;
              overflow: hidden;
          }

          20、div嵌套p時(shí),出現(xiàn)空白行

          解決方案:li{display: inline;}

          21、IE6默認(rèn)div高度為一個(gè)字體顯示的高度

          解決方案:{line-height: 1px;}或{overflow: hidden;}

          22、在Chrome中字體不能小于10px

          解決方案:p{font-size: 12px; transform: scale(0.8);}

          23、谷歌瀏覽器上記住密碼后輸入框背景色為黃色

          input{
              background-color: transparent !important;
          }
          input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill{
              -webkit-text-fill-color: #333 !important;
              -webkit-box-shadow: 0 0 0 1000px transparent inset !important;
              background-color: transparent !important;
              background-image: none !important;
              transition: background-color 5000s ease-in-out 0s;
          }

          24、CSS3兼容前綴表示

          寫法

          內(nèi)核

          瀏覽器

          -webkit-

          webkit渲染引擎

          chrome/safari

          -moz-

          gecko渲染引擎

          Firefox

          -ms-

          trident渲染引擎

          IE

          -o-

          opeck渲染引擎

          Opera

          如:

            .box{
                 height: 40px;
                 background-color: red;
                 color: #fff;
                 -webkit-border-radius: 5px; // chrome/safari
                 -moz-border-radius: 5px; // Firefox
                 -ms-border-radius: 5px; // IE
                 -o-border-radius: 5px; // Opera
                 border-radius: 5px;
             }

          JS兼容問(wèn)題

          1、事件對(duì)象的兼容

          e=ev || window.event

          2、滾動(dòng)事件的兼容

          scrollTop=document.documentElement.scrollTop || document.body.scrollTop;

          3、阻止冒泡的兼容

            if (e.stopPropagation) {
                e.stopPropagation();
            } else {
                e.cancelBubble=true;
            }

          4、阻止默認(rèn)行為的兼容

            if (e.preventDefault) {
                e.preventDefault();
            } else {
                e.returnValue=false;
            }

          5、添加事件監(jiān)聽(tīng)器的兼容

            if (target.addEventListener) {
                target.addEventListener("click", fun, false);
            } else {
                target.attachEvent("onclick", fun);
            }

          6、ajax創(chuàng)建對(duì)象的兼容

            var xhr=null;
            if (window.XMLHttpRequest) {
                xhr=new XMLHttpRequest();
            } else {
                xhr=new ActiveXObject("Microsoft XMLHTTP");
            } 

          7、鼠標(biāo)按鍵編碼的兼容

          function mouse (ev) {
                var e=ev || window.event; 
                if (evt) {
                    return e.button;
                } else if (window.event) {
                    switch (e.button) {
                        case 1: return 0;
                        case 4: return 1;
                        case 2: return 2;
                    }
                }  
          }

          8、在IE中,event對(duì)象有x,y屬性,F(xiàn)irefox中與event.x等效的是event.pageX,而event.pageX在IE中又沒(méi)有

          x=event.x ? event.x : event.pageX;

          9、在IE下,event對(duì)象有srcElement屬性,但是沒(méi)有target屬性;Firefox下,event對(duì)象有target屬性,但是沒(méi)有srcElement屬性

          var source=ev.target || ev.srcElement;
          var target=ev.relatedTarget || ev.toElement;

          10、在Firefox下需要用CSS禁止選取網(wǎng)頁(yè)內(nèi)容,在IE用JS禁止

          -moz-user-select: none; // Firefox 
          obj.onselectstart=function() {return false;} // IE

          11、innerText在IE中能正常工作,但在FireFox中卻不行

          if (navigator.appName.indexOf("Explorer") > -1) {
              document.getElementById('element').innerText="IE";
          } else {
              document.getElementById('element').textContent="Firefox";
          }

          12、在Firefox下,可以使用const關(guān)鍵字或var關(guān)鍵字來(lái)定義常量;在IE下,只能使用var關(guān)鍵字來(lái)定義常量

          解決方案:統(tǒng)一使用var關(guān)鍵字來(lái)定義常量

          移動(dòng)端兼容問(wèn)題

          1、禁止iOS識(shí)別長(zhǎng)串?dāng)?shù)字為電話

          解決方案:<meta content="telephone=no" name="format-detection" />

          2、禁止iOS彈出各種操作窗口

          解決方案:-webkit-touch-callout:none

          3、禁止Android手機(jī)識(shí)別郵箱

          解決方案:<meta content="email=no" name="format-detection" />

          4、禁止iOS和Android用戶選中文字

          解決方案:-webkit-user-select:none

          5、iOS下取消input在輸入的時(shí)候英文首字母的默認(rèn)大寫

          解決方案:<input autocapitalize="off" autocorrect="off" />

          6、Android下取消輸入語(yǔ)音按鈕

          解決方案:input::-webkit-input-speech-button {display: none}

          7、在移動(dòng)端修改難看的點(diǎn)擊的高亮效果,iOS和安卓下都有效

          解決方案:* {-webkit-tap-highlight-color:rgba(0,0,0,0);}

          8、iOS下input為type=button屬性disabled設(shè)置true,會(huì)出現(xiàn)樣式文字和背景異常問(wèn)題

          解決方案:使用opacity=1;

          9、input為fixed定位,在iOS下input固定定位在頂部或者底部,在頁(yè)面滾動(dòng)一些距離后,點(diǎn)擊input(彈出鍵盤),input位置會(huì)出現(xiàn)在中間位置

          解決方案:內(nèi)容列表框也是fixed定位,這樣不會(huì)出現(xiàn)fixed錯(cuò)位的問(wèn)題

          10、移動(dòng)端字體小于12px使用四周邊框或者背景色塊,部分安卓文字偏上bug問(wèn)題

          解決方案:可以使用整體放大1倍(width、height、font-size等等),再使用transform縮放

          11、在移動(dòng)端圖片上傳圖片兼容低端機(jī)的問(wèn)題

          解決方案:input 加入屬性accept="image/*" multiple

          12、在Android上placeholder文字設(shè)置行高會(huì)偏上

          解決方案:input有placeholder情況下不要設(shè)置行高

          13、overflow: scroll或auto;在iOS上滑動(dòng)卡頓的問(wèn)題

          解決方案:加入-webkit-overflow-scrolling: touch;

          14、iOS中日期如:2022-02-22 00:00:00格式的時(shí)間轉(zhuǎn)時(shí)間戳不成功

          解決方案:需要將時(shí)間中的'00:00:00去除之后才能轉(zhuǎn)為時(shí)間戳'

          15、iOS中需要將時(shí)間格式轉(zhuǎn)為/,如:2022/02/22

          let date='2022-02-22';
          let dateStr=date.replace(/-/g, '/'); // 2022/02/22

          16、移動(dòng)端click300ms延時(shí)響應(yīng)

          解決方案:使用Fastclick

          window.addEventListener( "load", function() { 
              FastClick.attach( document.body ); 
          }, false );

          17、移動(dòng)端1px邊框問(wèn)題

          解決方案:原先元素的border去掉,然后利用:before或者:after重做border,并transform的scale縮小一半,原先的元素相對(duì)定位,新做的border絕對(duì)定位

          .border-1px{ 
              position: relative; 
              border:none; 
          }
          
          .border-1px:after{
              content: '';
              position: absolute; 
              bottom: 0;
              background: #000;
              width: 100%; 
              height: 1px;
              -webkit-transform: scaleY(0.5);
              transform: scaleY(0.5);
              -webkit-transform-origin: 0 0;
              transform-origin: 0 0; 
          }

          至此,關(guān)于瀏覽器兼容性問(wèn)題的相關(guān)知識(shí)和解決方案就聊完了,最后還穿插了關(guān)于移動(dòng)端兼容的問(wèn)題描述,肯定還有很多沒(méi)有總結(jié)到的兼容性問(wèn)題,希望xdm在下方評(píng)論↘提供。

          看文至此,順手點(diǎn)個(gè)贊再走唄,3Q^_^

          后語(yǔ)

          伙伴們,如果覺(jué)得本文對(duì)你有些許幫助,點(diǎn)個(gè)或者?個(gè)關(guān)注在走唄^_^ 。另外如果本文章有問(wèn)題或有不理解的部分,歡迎大家在評(píng)論區(qū)評(píng)論指出,我們一起討論共勉。

          隨時(shí)隨地給大家提供技術(shù)支持的葡萄又來(lái)了。這次的事情是這樣的,提供demo屬于是常規(guī)操作,但是前兩天客戶突然反饋壓縮傳輸模塊拋出異常,具體情況是壓縮內(nèi)容傳輸?shù)椒?wù)端后無(wú)法解壓。

          由于代碼沒(méi)有發(fā)生任何變動(dòng),前端相關(guān)依賴也沒(méi)有升級(jí),服務(wù)端java版本也沒(méi)有變化,所以我們可以推定為環(huán)境問(wèn)題;進(jìn)一步仔細(xì)檢查,經(jīng)過(guò)反復(fù)對(duì)比后突然發(fā)現(xiàn)服務(wù)端收到的壓縮內(nèi)容變長(zhǎng)了;和前端請(qǐng)求內(nèi)容進(jìn)行對(duì)比,發(fā)現(xiàn)所有的\r和\n都變成了\r\n。

          綜合以上分析我們初步判斷:?jiǎn)栴}出在了瀏覽器轉(zhuǎn)譯之中。為了驗(yàn)證猜想是否正確,葡萄將chrome版本回退到92版,異常消失,服務(wù)端接收的內(nèi)容也沒(méi)有被替換。

          問(wèn)題是順利解決了,但是Chrome POST數(shù)據(jù)內(nèi)容居然會(huì)在傳輸過(guò)程中發(fā)生變化。一直擅長(zhǎng)大前端技術(shù)的葡萄絕不認(rèn)輸,為了弄明白這一原因,我們來(lái)看看POST的細(xì)節(jié)操作到底有什么。
          控制字符
          首先我們需要搞清楚幾個(gè)控制字符的含義。

          • 回車符(CR)和換行符(LF)是文本文件用于標(biāo)記換行的控制字符(control characters)或字節(jié)碼(bytecode)。
          • CR=Carriage Return,回車符號(hào)(\r,十六進(jìn)制 ascii 碼為0x0D,十進(jìn)制 ascii 碼為13),用于將鼠標(biāo)移動(dòng)到行首,并不前進(jìn)至下一行。
          • LF=Line Feed,換行符號(hào)( \n, 十六進(jìn)制 ascii 碼為 0x0A,十進(jìn)制 ascii 碼為10)。
            緊鄰的 CR 和 LF(組成 CRLF,\r\n,或十六進(jìn)制 0x0D0A)將鼠標(biāo)移動(dòng)到下一行行首。(Windows 操作系統(tǒng)默認(rèn)的文本換行符為 CRLF;Linux 以及 macOS 系統(tǒng)默認(rèn)使用 LF,早期的 mac os 系統(tǒng)使用 CR 換行。)

          在代碼管理中,在不同操作系統(tǒng)下CRLF會(huì)有很大不同。下面在不同系統(tǒng)中為大家實(shí)際演示一下:
          在Mac Visual Code中新建一個(gè)文檔默認(rèn)為L(zhǎng)F,而Windows中為CRLF,可以選擇切換行尾序列的內(nèi)容的類型。


          Mac版Visual Code


          Windows 版

          面對(duì)這種情況,需要開(kāi)發(fā)者統(tǒng)一CRLF,以免不同操作系統(tǒng)開(kāi)發(fā)導(dǎo)致代碼管理的混亂。

          POST傳輸?shù)臄?shù)據(jù)變化

          弄明白了在不同系統(tǒng)中,控制字符會(huì)出現(xiàn)不同的原因,接下來(lái)我們就需要搞清楚為什么POST的數(shù)據(jù)在傳輸過(guò)程中發(fā)生了變化。

          我們來(lái)寫個(gè)簡(jiǎn)單Demo測(cè)試一下。先在頁(yè)面上放一個(gè)允許換行的textarea, 輸入帶換行的文本,獲取內(nèi)容看到只有\(zhòng)n轉(zhuǎn)譯。通過(guò)FormData直接post數(shù)據(jù)到服務(wù)端,然后直接返回,看到\n全部變成了\r\n。

                      var uploadData=document.getElementById("ta").value
                      var formData=new FormData();
                      formData.append("data", uploadData)
                      fetch("http://localhost:8088/spread/getpdf", {
                              body: formData,
                              method: "POST"
                          }).then(resp=> resp.text())
                          .then(text=> {
                              console.log(JSON.stringify(text));
                              document.getElementById("result").innerHTML=JSON.stringify(text)
                          })
          
          

          瀏覽器標(biāo)識(shí):

          Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36
          

          回退Chrome到92版本,發(fā)送和接收文本此時(shí)編為一致:

          Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
          

          深入探究這一原因,我們了解到互聯(lián)網(wǎng)請(qǐng)求意見(jiàn)稿2046(RFC 2046)4.1.1.中有明確說(shuō)明:

           “ The canonical form of any MIME‘text’ subtype MUST always represent a
             line break as a CRLF sequence. “ 
          

          這里我們可以看到所有的文本類型都要使用CRLF,而Chrome只是修復(fù)了一個(gè)“bug”,對(duì)于用戶而言,在普通文本中用戶感知不到CR、LF和CRLF的區(qū)別,但是當(dāng)使用場(chǎng)景轉(zhuǎn)換到解壓的文本內(nèi)容就變得十分重要。

          三種解決方式

          大家都知道POST是HTTP的一個(gè)常用方法,而另一個(gè)我們常用的方法是GET。
          關(guān)于GET和POST區(qū)別以及使用相關(guān)問(wèn)題這里不做贅述,要解決POTS傳輸?shù)臄?shù)據(jù)變化問(wèn)題,最相關(guān)的是Content-Type。

          首先我們來(lái)了解Content-Type和MIME分別是什么:
          Content-Type,內(nèi)容類型,一般是指網(wǎng)頁(yè)中存在的Content-Type,用于定義網(wǎng)絡(luò)文件的類型和網(wǎng)頁(yè)的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個(gè)文件,這就是經(jīng)常看到一些Asp網(wǎng)頁(yè)點(diǎn)擊的結(jié)果卻是下載到的一個(gè)文件或一張圖片的原因。

          在POST中常用的Content-Type有application/x-www-form-urlencoded、multipart/form-data和application/json。

          1、 application/x-www-form-urlencoded
          將需要內(nèi)容提交表單后,內(nèi)容會(huì)按照name1=value1&name2=value2的方式編碼,并且key和valu e都會(huì)進(jìn)行URL轉(zhuǎn)碼。
          對(duì)于"\n"和"\r" 會(huì)被轉(zhuǎn)碼為'%0A'和'%0D',通過(guò)這種傳輸方式,避免了瀏覽器的對(duì)CRLF的修正可以解決以上問(wèn)題。
          但是這樣轉(zhuǎn)碼會(huì)增加文本長(zhǎng)度,原本1個(gè)字符變成了3個(gè),結(jié)果是壓縮的文本又變長(zhǎng)了。

          2、multipart/form-data
          當(dāng)需要想服務(wù)器提交文件時(shí),就需要使用這種方式。前面代碼中我們可以看到當(dāng)formData是普通文本是會(huì)被修正,為了解決這個(gè)情況我們可以將string內(nèi)容封裝到Blob中作為文件流傳輸,來(lái)避免修正。
          這樣傳輸,服務(wù)端會(huì)以文件方式收到內(nèi)容,直接讀取Stream內(nèi)容;對(duì)于壓縮文本,這種處理方式最優(yōu)。

                     var formData=new FormData();
                      formData.append("data", uploadData)
                      formData.append("data1", new Blob( [uploadData]))
          
          
          

          上圖展示了同樣的內(nèi)容,使用不同方式進(jìn)行傳輸。

          3、 application/json
          Json也是目前比較流行的傳輸方式,json的內(nèi)容在post傳輸中也不會(huì)被改變,如果文本內(nèi)容不長(zhǎng),也是不錯(cuò)的方式。

                    fetch("http://localhost.charlesproxy.com:8088/spread/postjson", {
                              headers: {
                                  'Content-Type': 'application/json',
                              },
                              body: JSON.stringify({data: uploadData}),
                              method: "POST"
                          }).then(resp=> resp.text())
                          .then(text=> {
                              console.log(JSON.stringify(text));
                              document.getElementById("result").innerHTML=JSON.stringify(text)
                          })
          

          總結(jié)

          作為一個(gè)前端er,除了HTML、CSS和Javascript三大件,熟練使用Axios等類庫(kù)調(diào)用API,更不可忽視的是要了解如何調(diào)試網(wǎng)絡(luò)請(qǐng)求,在項(xiàng)目出現(xiàn)問(wèn)題時(shí)能快速定位到問(wèn)題的所在。

          這里提供了在 Angular 框架下動(dòng)態(tài)加載js文件時(shí)返回 Content-Type 為text/html 的Demo,大家感興趣的可以自行下載試試。

          本人花費(fèi)2個(gè)月時(shí)間,整理了一套JAVA開(kāi)發(fā)技術(shù)資料,內(nèi)容涵蓋java基礎(chǔ),分布式、微服務(wù)等主流技術(shù)資料,包含大廠面經(jīng),學(xué)習(xí)筆記、源碼講義、項(xiàng)目實(shí)戰(zhàn)、講解視頻。


          希望可以幫助一些想通過(guò)自學(xué)提升能力的朋友,領(lǐng)取資料,掃碼關(guān)注一下


          記得轉(zhuǎn)發(fā)+關(guān)注+私信

          私信回復(fù)【2022面試資料】


          領(lǐng)取更多學(xué)習(xí)資料


          主站蜘蛛池模板: 日韩精品无码一区二区三区不卡 | 乱中年女人伦av一区二区| 在线成人一区二区| 无码精品人妻一区二区三区影院| 日韩人妻无码一区二区三区久久99| 欧美亚洲精品一区二区| 国产精品无码一区二区三区电影| 国产精品亚洲一区二区无码| 人妻无码一区二区三区免费| 国产精品一区二区av不卡| 亚洲综合无码一区二区痴汉| 国产精品99无码一区二区| 人妻av无码一区二区三区| 人妻无码一区二区三区| 亚洲熟女乱色一区二区三区| 久久久久国产一区二区| 国产一区二区三区影院| 国产亚洲欧洲Aⅴ综合一区| 欧美人妻一区黄a片| 久久精品道一区二区三区| 制服美女视频一区| 亚洲视频一区在线| 东京热人妻无码一区二区av| 成人精品一区二区三区电影| 久久精品道一区二区三区| 福利视频一区二区牛牛| 亚洲熟妇AV一区二区三区浪潮| 亚洲片国产一区一级在线观看| 国产精品制服丝袜一区| 国产a∨精品一区二区三区不卡| 国产在线一区视频| 韩国理伦片一区二区三区在线播放| 精品国产香蕉伊思人在线在线亚洲一区二区| 91久久精品午夜一区二区| 日本高清成本人视频一区| 动漫精品第一区二区三区| 亚洲av无码一区二区三区在线播放| 中文字幕在线精品视频入口一区| 日韩一区二区三区在线观看| 影院成人区精品一区二区婷婷丽春院影视| 在线视频精品一区|