ASP.Net MVC Ajax / InsertionMode / HTML5 / IE 8

时间:2011-07-18 23:45:01

标签: asp.net-mvc-3 html5 asp.net-ajax

我在IE 8中遇到了一个奇怪的问题。

这是我们得到的。运行Asp.net MVC 3.使用Ajax.beginform发布一些数据包。响应返回一个包含HTML 5的视图(只是一个section标签)。这对于知道HTML 5是什么的浏览器来说效果很好。

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

然而,在IE 8中,当插入HTML时,我们会有一些愚蠢。使用开发人员工具检查元素表明IE 8正在自动关闭section标签,而不是像这样在内容周围包装标签:

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

我们正在引用流行的HTML5 shiv JS文件,但在页面加载后似乎没有任何影响。似乎无论javascript正在进行插入,都无法识别新的部分标记。

另一件有趣的事情是,当web.config中的UnobtrusiveJavaScriptEnabled为false时,它的工作正常。但由于其他一些原因,我们需要启用UnobtrusiveJavaScriptEnabled

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

禁用UnobtrusiveJavaScriptEnabled将使用Microsoft Ajax库,而在启用时,它将使用JQUery库。这就是为什么它在禁用时工作和启用时工作之间的不一致。插入DOM元素时,JQuery不使用innerHTML,而MS库则使用。

我找到了一些使用名为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