2011-07-18 32 views
1

我得到一個奇怪的問題在IE 8ASP.Net MVC的Ajax/InsertionMode/HTML5/IE 8

下面是我們得到了。運行Asp.net MVC 3.使用Ajax.beginform發佈一些數據包。該響應返回一個包含HTML 5的視圖(只是一個節標籤)。這在瀏覽器中工作得很好,它知道HTML 5是什麼。

@using (Ajax.BeginForm(new AjaxOptions {InsertionMode = InsertionMode.Replace, UpdateTargetId = "main" })) 
{ 
    <section class="stackoverflow">Hello World!</section> 
} 

但是,在IE 8中,當插入HTML時,我們會得到一些funkiness。使用開發者工具檢查的元素顯示,IE 8是自我封閉部分標籤,而不是周圍包裹這樣的內容標籤:

<section class="stackoverflow"/> 
Text - Hello World! 

我們引用的是流行的HTML5希夫JS文件,但是,這並不似乎有頁面加載後的任何影響。看來,無論JavaScript做什麼插入,都不會識別新的部分標記。

另一個有趣的事情是,當在web.config中UnobtrusiveJavaScriptEnabled爲false時,它工作得很好。但是由於其他一些原因,我們需要啓用UnobtrusiveJavaScriptEnabled

任何想法?

回答

1

禁用UnobtrusiveJavaScriptEnabled將使用Microsoft Ajax庫,而啓用時,它將使用JQUery庫。這就是爲什麼當禁用時工作與啓用時工作不一致的原因。插入DOM元素時,JQuery不使用innerHTML,而MS庫則使用innerHTML。

我找到了一些解決方法,使用名爲innershiv的插件。下面是一些參考: http://tomcoote.co.uk/javascript/ajax-html5-in-ie/
Can't select HTML5 element's children in IE8 with jQuery selector


我們還利用HTML5 SHIV此問題是報告的bug:
http://code.google.com/p/html5shiv/issues/detail?id=4