顯示具有 IE 標籤的文章。 顯示所有文章
顯示具有 IE 標籤的文章。 顯示所有文章

2014年10月1日 星期三

微軟更新 IE 的技術支援生命期期

微軟的 IE 一直被人罵,所以微軟除了更新 IE 版本外,也發現客戶不更新版本,卻一直罵 IE 不好用。

眼看著 Chrome, Firefox等市佔率一直成長,但 IE 身為作業系統的一部份,不能說更新就更新。不像 Chrome, Firefox 是強迫更新,且無法降版本。


因此,微軟更新 IE 的技術支援生命期期。

原則: 2016/1/12 之後,Windows 只支援該 Windows 版本的可用 IE 的最新版本。

例如:Windows Vista 可支援的 IE 版本為 7, 8, 9。到2016/1/12 起,只支援 IE 9。雖然仍然可以執行 IE 7,8,但微軟不再支援!  有問題,請升級 IE 9。

相關的 Windows  版本及 IE 版本,請見 http://support2.microsoft.com/gp/microsoft-internet-explorer

2014年6月25日 星期三

我的網頁在 IE 11 下不能執行!?

今天發生的問題。

問題

我的網頁,在 IE11 下執行會發生錯誤,但 Chrome 卻是正常。所以 IE 好…

錯訊訊息

幸好,我們有留 exception log,並且當錯誤時直接會寄信到我們的信箱。

System.Data.SqlClient.SqlException: The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.

怎麼會和 SQL 有關係呢?

再看程式碼

public Order GetFeedbackData(string taxNo, DateTime today)
{
    const string sql = @"Select * from Orders where orderDate = {0}";
    var query = _db.Database.SqlQuery<Order>(
        sql, today.ToShortDateString()).FirstOrDefault();
    return query;
}

原來,和 SQL 組字串有關。再看 ToShortDateString 的 msdn 說明,這個方法與Thread.CurrentCulture 有關。

答案呼之欲出了。

Web.Config

再看 Web.config, 有一段設定如下

<globalization culture="auto" uiCulture="auto"/>

查一下 http://msdn.microsoft.com/zh-tw/library/hy4kkhe0(v=vs.85).aspx,發現這個就是用來取得 Rquest 的 Thread.CurrentCulture 的根據。

使用 Fiddler 錄一下 Request, 發現 IE 11 的 Header Accept-Language: zh-Hant-TW,而 Chrome 的則為 zh-TW

答案揭曉。是 IE 10 之後,預設的 Accept-Language 改為 zh-Hant-TW

解決

解決方法很簡單,就是

  1. 不要組SQL 字串啦!
public Order GetFeedbackData(string taxNo, DateTime today)
{
    const string sql = @"Select * from Orders where orderDate = {0}";
    var query = _db.Database.SqlQuery<Order>(
        sql, today.ToShortDateString()).FirstOrDefault();
    return query;
}

直接使用 today 的 DateTime 型別傳入 Entity Framework 讓它為我們查詢即可。

參考

ASP.NET 2.0 多國語系網站與 Windows 8 的 IE10 語系設定

2013年5月10日 星期五

IE8 與 Knockout js

客戶抱怨網頁呈現不正確。資料出不來。

看了一下,客戶使用的是 IE8 on Windows 7。天啊!算很新的系統,但就是不肯更新 IE 版本。

問題在 Knockoutjs

我用IE 10 按F12 開發者工具,檢查一下錯誤的 javascript

image

SCRIPT5022: Unable to parse bindings.
Message: SyntaxError: Expected identifier, string or number;
Bindings value: text: CompanyName, attr: { for: 'c' + TaxNo()}

binding 的 html 如下

<label data-bind="attr:{for: 'r' + ReportHeaderId()}, text: ReportName"></label>

原因

舊版本IE 會將 for: 當成 javascript 的保留字,想把它當成 javascript 來跑,因而錯誤。

解法

加上單引號,變成字串即可

<label data-bind="attr:{'for': 'r' + ReportHeaderId()}, text: ReportName"></label>

2012年5月30日 星期三

JSON 未被定義

客戶抱怨出現了下面的 javascript 錯誤。

JSON 未被定義

原因

IE 7 以下的IE版本, 執行 jQuery 執行 ajax 時會發生此錯誤。

解法

步驟1:使用 NuGet 加入  json2

image

步驟2: 加上如下的 javascript (我使用的是  ASP.NETMVC)

 

<script type="text/javascript">
    if (typeof (JSON) == 'undefined') { 
      $('head').append($("<script type='text/javascript' src='@Url.Content("~/Scripts/json2.js")'>"));
    }
  </script>

Share with Facebook