遇到個(gè)詭異bug,雖然bug中套bug,忽略次要bug,其中最詭異最典型的現(xiàn)象是多行window.top.$("#id")取值操作,其中有一行卻取不到值.這個(gè)著實(shí)讓我費(fèi)解.因?yàn)橛玫搅藅op,我開始以為是z-index引起的層級(jí)問題.因?yàn)槲以陧?yè)面中alert一下要取的元素,頁(yè)面功能就看起來正常了.只不過期間多了一個(gè)彈出框.正常后怎么都是正常的,除非重新開啟瀏覽器會(huì)再次故障.
當(dāng)然這期間查找過取不到值的id,確實(shí)是存在的.再看一下整個(gè)頁(yè)面的布局,多個(gè)iframe,每個(gè)iframe最終會(huì)引入一個(gè)jsp頁(yè)面.所以整體布局非常復(fù)雜,著實(shí)讓人頭大,無奈只好回退到20個(gè)版本之前,一個(gè)一個(gè)版本試驗(yàn),查找故障邊界版本..
在掙扎了10幾個(gè)版本后終于確定到故障發(fā)生的版本,我個(gè)人認(rèn)為這個(gè)應(yīng)該是主頁(yè)面的布局被損壞了,所以查看一下故障版本對(duì)主頁(yè)面的更改,在引入的js文件中查到一個(gè)讓我崩潰的結(jié)果.這個(gè)故障版本中居然通過jquery在主頁(yè)面中生成了一個(gè)元素,但是這個(gè)元素的id和頁(yè)面中的某個(gè)iframe將要引入的子jsp文件中的一個(gè)元素id是相同的,也就是說,這個(gè)頁(yè)面中有2個(gè)id相同的元素,一個(gè)在主頁(yè)面中,一個(gè)在引入的子jsp頁(yè)面中,結(jié)果導(dǎo)致引入的jsp文件中相關(guān)方法全都異常失效,而且失效的表現(xiàn)還很詭異..
這讓我長(zhǎng)了一個(gè)教訓(xùn)啊,因?yàn)槭嵌鄠€(gè)iframe,所以在確認(rèn)頁(yè)面中是否存在要取值的id元素時(shí),也僅僅是確認(rèn)了子jsp頁(yè)面中是否存在,完全沒想到id同名會(huì)造成這么詭異的問題.
所以要是引入多個(gè)jsp頁(yè)面出現(xiàn)故障,不妨排查一下所有子jsp頁(yè)面中的id是否和主頁(yè)面中的元素id有重名的.
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注