摘要:問題公司有個(gè)項(xiàng)目,功能很簡單,讀取業(yè)務(wù)數(shù)據(jù),展示在頁面上。結(jié)論不能直接引用,一旦語句中出現(xiàn)引用,后面的代碼就不再執(zhí)行了,就像個(gè)黑洞,把光都吸走了,無影無蹤。
問題:
公司有個(gè)項(xiàng)目,功能很簡單,讀取業(yè)務(wù)數(shù)據(jù),展示在頁面上。
一個(gè)很簡單的問題,卻因?yàn)槟繕?biāo)瀏覽器是IE9,卡了三天。
前端給的反饋是:
在IE9下,程序一會(huì)兒對(duì),一會(huì)兒不對(duì)……第一次刷不出來,多刷幾次就刷出來了。
這些話,聽著就覺得怪,如果聽之任之,就成了不明就里一筆糊涂賬。
于是,我開始跟他們一起調(diào)試,就在大家快要放棄的時(shí)候,我發(fā)現(xiàn),這個(gè)“一會(huì)兒對(duì),一會(huì)兒不對(duì)”跟console對(duì)象的引用有關(guān),只要把引用了console對(duì)象的語句注釋掉,腳本的運(yùn)行結(jié)果就總是正確,反之,就“一會(huì)兒對(duì),一會(huì)兒不對(duì)”。
BUG找到了,但我還是覺得這個(gè)console得徹底搞清楚,不然還得至少踩兩三年的坑。
Does IE9 support console.log, and is it a real function?
In Internet Explorer 9 (and 8), the console object is only exposed when the developer tools are opened for a particular tab. If you hide the developer tools window for that tab, the console object remains exposed for each page you navigate to. If you open a new tab, you must also open the developer tools for that tab in order for the console object to be exposed.
真不知道這家伙從哪學(xué)會(huì)的秘籍,這么詭異的現(xiàn)象,即便自己發(fā)現(xiàn)了,也不敢這樣總結(jié)。
結(jié)論:
IE9不能直接引用console,一旦語句中出現(xiàn)console引用,后面的代碼就不再執(zhí)行了,console就像個(gè)黑洞,把光都吸走了,無影無蹤。
一旦你想要借助Development Tools去調(diào)試一下,看看是不是console引用出了問題,IE9就會(huì)馬上創(chuàng)建一個(gè)console對(duì)象,然后這個(gè)BUG就不見了!這時(shí)候你關(guān)掉Development Tools,console依然還在……下次你再打開新頁面,console又成了黑洞。
如果沒有旁人的幫助,不大可能從這個(gè)坑里爬出來的,我們只能告訴客戶,程序在IE9中運(yùn)行的結(jié)果是“一會(huì)對(duì),一會(huì)兒不對(duì),好像是隨機(jī)的……”。
解決方法:
把window.console復(fù)制給console
console = window.console || {};
然后再給這個(gè)空的console對(duì)象,添加一些空的方法,讓它們?cè)贗E9以及其他不支持console的瀏覽器上不要拋異常,好讓我們的程序順利執(zhí)行。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/100100.html
摘要:事件相關(guān)內(nèi)容當(dāng)用戶與瀏覽器發(fā)生的一些交互時(shí)如果希望去獲得用戶行為就需要借助事件來完成事件部分內(nèi)容在中重要性不言而喻羅列需要了解與事件相關(guān)的知識(shí)如下這也是面試中遇到的問題事件的級(jí)別事件模型事件流事件處理程序描述事件捕獲冒泡的具體流程對(duì)象常見的 DOM事件相關(guān)內(nèi)容 當(dāng)用戶與瀏覽器發(fā)生的一些交互時(shí), 如果希望去獲得用戶行為, 就需要借助事件來完成. 事件部分內(nèi)容在 JS中重要性不言而喻. ...
摘要:事件相關(guān)內(nèi)容當(dāng)用戶與瀏覽器發(fā)生的一些交互時(shí)如果希望去獲得用戶行為就需要借助事件來完成事件部分內(nèi)容在中重要性不言而喻羅列需要了解與事件相關(guān)的知識(shí)如下這也是面試中遇到的問題事件的級(jí)別事件模型事件流事件處理程序描述事件捕獲冒泡的具體流程對(duì)象常見的 DOM事件相關(guān)內(nèi)容 當(dāng)用戶與瀏覽器發(fā)生的一些交互時(shí), 如果希望去獲得用戶行為, 就需要借助事件來完成. 事件部分內(nèi)容在 JS中重要性不言而喻. ...
摘要:指定事件處理程序指定事件處理程序主要有兩種方式級(jí)事件處理程序級(jí)事件處理程序。添加事件處理程序注意這里是哦或移除事件處理程序使用移除事件處理程序的條件與方法相同必須提供相同的參數(shù),從而添加的匿名函數(shù)也無法被移除。 今天看書又看到事件,遂決定小總結(jié)一下~ JavaScript與HTML之間的交互是通過事件實(shí)現(xiàn)的。事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互瞬間。可以使用監(jiān)聽器(事件處...
摘要:指定事件處理程序指定事件處理程序主要有兩種方式級(jí)事件處理程序級(jí)事件處理程序。添加事件處理程序注意這里是哦或移除事件處理程序使用移除事件處理程序的條件與方法相同必須提供相同的參數(shù),從而添加的匿名函數(shù)也無法被移除。 今天看書又看到事件,遂決定小總結(jié)一下~ JavaScript與HTML之間的交互是通過事件實(shí)現(xiàn)的。事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特定的交互瞬間??梢允褂帽O(jiān)聽器(事件處...
閱讀 3411·2021-11-24 10:30
閱讀 3282·2021-11-22 15:29
閱讀 3714·2021-10-28 09:32
閱讀 1281·2021-09-07 10:22
閱讀 3345·2019-08-30 15:55
閱讀 3631·2019-08-30 15:54
閱讀 3510·2019-08-30 15:54
閱讀 2840·2019-08-30 15:44