下午做為老大(他是做產(chǎn)品的)讓我嘗試破解一下kodexplorer(一個PHP做的文件管理工具),做為一名前端猪狈,完全根本就看不懂PHP箱沦。
就在我裝模作樣在百無聊賴的嘗試的時候,QQ閃了雇庙。點開一看谓形,是我一大學(xué)同學(xué)。
然后問:“為何點擊不能下載”
我下意識的讓他給A標(biāo)簽添加一個download="true"試試套耕。
回復(fù):“還是不行”
想想也是正常。download是HTML5給A增加的一個新屬性峡继,作用是告訴瀏覽器這個鏈接的文件以下載的方式處理,download屬性的值就是文件的名稱(個人理解匈挖,具體定義可以去w3c搜一搜)碾牌。但在沒有這個屬性之前,當(dāng)A標(biāo)簽鏈接是瀏覽器不能直接執(zhí)行或者解析的文件時儡循,默認(rèn)就會變成下載舶吗。這里鏈接的是一個文件,所以應(yīng)該是下載择膝。是否添加download都該是同一個效果誓琼。
現(xiàn)在我們來看看
那還能有什么原因呢?我馬上想到是js把A標(biāo)簽的默認(rèn)事件阻止了肴捉。
然后我還問了問是不是標(biāo)簽交叉了腹侣,標(biāo)簽交叉不同瀏覽器會有些不同的表現(xiàn),然后他告訴我并沒了并且發(fā)了圖片給我
所以我認(rèn)為很有可能是JS阻止了A標(biāo)簽的默認(rèn)行為齿穗。并告訴了他如何處理傲隶。
然后我倆突然跳出了這個話題,聊了還一會之后窃页。我問剛剛的問題解決了沒有跺株。回答沒有脖卖,還是不知道怎么弄乒省。
這里我get到了一個新玩意,TeamViewer畦木。袖扛。。我之前一直都還是使用的QQ遠程馋劈,和這個比一下真的差距太大了攻锰。連上遠程之后晾嘶,正好他也是用的Chrome,在Chrome瀏覽器里把A標(biāo)簽事件移除之后娶吞,果斷點擊有有了效果垒迂。所以肯定就是事件禁止了A標(biāo)簽的默認(rèn)行為。
其實那個remove我也是今天才發(fā)現(xiàn)的机断,才知道還可以這樣玩。
最后確定是圖4的div標(biāo)簽的data-toggle="buttons"引起的绣夺,去掉buttons就恢復(fù)正常吏奸。這邊想去研究一下為啥boostrap會把A標(biāo)簽的默認(rèn)行為給禁止了,我嘗試了下載了一個bootstrap引用了一下陶耍,對照他的那個結(jié)構(gòu)寫了標(biāo)簽嘗試了一下奋蔚,沒有復(fù)現(xiàn)出你的那個bug。data-toggle="buttons"在boostrap官網(wǎng)貌似并沒有見過這個值烈钞,應(yīng)該是引用了一些基于bootstrap的插件引起的問題泊碑。然后也就到下班的時間了,我也就沒繼續(xù)深究了
之前還遇到過一些a標(biāo)簽點擊沒反應(yīng)的情況是毯欣,其它的層將a標(biāo)簽覆蓋住了馒过,導(dǎo)致a標(biāo)簽無法比點擊到。
最后酗钞,只是簡單寫了一下bug的日常腹忽,所以很多知識并沒有深入去解釋。比如a標(biāo)簽的詳細(xì)用法砚作,download的官方解釋和兼容性窘奏,Chrome開發(fā)者工具的使用等等。如果想詳細(xì)了解偎巢,可以自行去百度蔼夜。
最后,如果看完压昼,不管你覺得我寫得太屎還是有用求冷,反正你也看到最后了,隨便點個贊或者回復(fù)一下唄窍霞。