gpt4 book ai didi

internet-explorer - 强制 IE8 不使用兼容模式,在主题中使用 MetaData 不起作用

转载 作者:行者123 更新时间:2023-12-04 18:09:31 25 4
gpt4 key购买 nike

正如我的问题标题已经告诉我在强制 IE8 不使用兼容模式时遇到问题。

我在网上找到了两个解决方案,一个来自 Michael Gollmick ,至极将此代码添加到 beforeRenderResponse 中:

if (context.getUserAgent().isIE()) {
var response = facesContext.getExternalContext().getResponse();
response.setHeader("X-UA-Compatible", "IE=8");
}

此解决方案运行良好,浏览器中的兼容模式按钮消失,页面看起来应该如此。乙

我不想将此代码添加到每个 XPage,所以我尝试了 Per Henrik Lausten 中的解决方案将 MetaData 添加到我的主题:
<resources>
<metaData>
<httpEquiv>X-UA-Compatible</httpEquiv>
<content>IE=8</content>
</metaData>
</resources>

但是这个主题中的元数据似乎没有任何作用。在查看 HTML 源代码时,我在源代码的标题中发现了 Meta 标记,但 IE8 似乎只是忽略了它。
<meta content="IE=8" http-equiv="X-UA-Compatible">

那么如何从 Theme 工作中获取 MetaData 呢?或者可以使用任何其他解决方案来自动将 onRenderResponse 代码添加到每个 XPage。

最佳答案

您可以使用 PhaseListener 或 Theme 执行此操作。使用主题时,您可以使用您在 XPage 中不需要的 styleClass 并计算值:

<control>
<name>ViewRoot</name>
<property>
<name>styleClass</name>
<value>#{javascript:
var response = facesContext.getExternalContext().getResponse();
response.setHeader("X-UA-Compatible", "IE=8");
}</value>
</property>
</control>

PhaseListener 看起来像这样:
package ch.hasselba.xpages.jsf;

import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpServletResponse;

public class IEPhaseListener implements PhaseListener {

private static final long serialVersionUID = 1L;

public void afterPhase(PhaseEvent event) {
}

public void beforePhase(PhaseEvent event) {
HttpServletResponse response = (HttpServletResponse) event
.getFacesContext().getExternalContext().getResponse();
response.setHeader("X-UA-Compatible", "IE=8");

}

public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}

}

关于internet-explorer - 强制 IE8 不使用兼容模式,在主题中使用 MetaData 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17962660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com