一個編碼引發js錯誤的問題

來源:互聯網
上載者:User

  在做一個網站背景時候,網頁引用的一個刪除商品的函數在IE6,IE7中死活不能執行。狗血的IE6 IE7不像chrome那樣有控制台,因此調試起來非常麻煩,只給了一個大概行數,和對象undefined。

  既然在chrome,ie9,ff中能執行,在IE6,IE7中失敗,首先想到的就是相容問題。但函數裡面都是用jquery實現的,除了confirm(),應該不存在相容問題。於是又想到一個事情:網站是基於frameset,難道在frame頁中引用js,不能在子frame中調用?於是將原來的onclick="deleteProduct()"改成onclick="window.top.frames[2].deleteProduct()"又不行。

  於是乾脆逐句逐句來調試。將admin.js裡面的所有代碼刪除,強刷頁面(在WINDOWS 7中使用thinapp ie6強刷也不會強制擷取新版本js,鬱悶,只能每次都刪除快取檔案)。一路追蹤到一句if(!confirm("確定刪除勾選項?")){return false;} 上。但文法怎樣看也不像有錯誤,但去了這句,就正常了,一加上這句,網頁就報“未結束的字串常量”,問題肯定在這句身上。google了一下,發現原來是編碼問題。

  問題的原因就是:我的frameset檔案都是html檔案。在dw建立的時候不知道為什麼,檔案是ansi編碼的。meta中的charset卻又是gb2312,而js檔案卻是utf-8,這樣在載入js時候,utf8的js被載入到gb2312的dom中,就出現了字串常量為結束的情況。

  於是將所有的frame檔案重新儲存成utf-8,並修改meta中的charset為utf-8,問題解決。

總結:

  1.通常google過某個問題,但好像沒什麼人遇到過,那幾乎可以說明這個問題是個偽問題。

  2.IE的提示還是有點用的,如果我能早點google“未結束的字串常量”,估計早就解決了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.