2013-08-23 22 views
0

我试图将一组Web应用程序从.NET 2.0 WebForms迁移到由WCF Web服务提供的HTML5 Backbone应用程序,并且已经创建了一个相当主要的障碍。ChromeFrame忽略跨站点导航中的X-UA兼容标头

托管两个网站并排侧,与web.config每个设置与以下:

新的应用程序

<httpProtocol> 
    <customHeaders> 
    <clear /> 
    <add name="X-UA-Compatible" value="IE=edge,chrome=1" /> 
    </customHeaders> 
</httpProtocol> 

遗留应用

<httpProtocol> 
    <customHeaders> 
    <clear /> 
    <add name="X-UA-Compatible" value="IE=7,9" /> 
    </customHeaders> 
</httpProtocol> 

安装Chrome Frame后,独立访问每个站点似乎工作正常,b用一个超链接从一个链接到另一个链接导致头部被忽略,据我所知。这意味着如果用户从我们的HTML5主页导航到旧版代码,那么针对IE7的旧代码(与我无关!)将会落空。

有没有人遇到过这个问题,如果是的话,你是如何解决它的?


< antisnark>

让我们假设在发射前在移植所有的遗留代码是出了问题。

</antisnark>

+0

值X -UA-Compatible IE = 7,9并没有太大的意义。你希望瞄准什么版本的引擎? – EricLaw

回答

1

内嵌框架已经停止。

最好的办法是切换到Chrome's Legacy Browser Support,根据访问的网站,它默默地切换用户的浏览器。

编辑

documentation

浏览器内嵌框架作为一个封闭的容器

GCF将所有顶级导航到Internet Explorer。这是为了允许内容加载到主机浏览器中的其他链接。此功能 可以通过在HKCU \ Software \ Google \ ChromeFrame下添加一个DWORD值HandleTopLevelRequests = 0 来关闭。在这种情况下,所有后续顶级导航都将保留在Chrome Frame 之内,无论它们是否具有元标记。

所以打出来的CF,您必须链接设置target="_top"或打开一个弹出窗口中的链接 - 这只要在注册表项HandleTopLevelRequests设置为1

+0

原则上同意您的评论,但我不设置IT政策。出于某种原因,'target =“_ blank”'链接打开了一个新的Chrome Frame选项卡,而不是标准的IE8选项卡... –