internet explorer - Force IE8 not to use compatibility mode, using MetaData in Theme not working -
as question title tells have problems forcing ie8 not use compatibility mode.
i found 2 solutions on web 1 michael gollmick, wich adds code beforerenderresponse:
if (context.getuseragent().isie()) { var response = facescontext.getexternalcontext().getresponse(); response.setheader("x-ua-compatible", "ie=8"); }
this solution works fine compatibility mode button in browser disapears , page looks should. b
ut don't want add code every xpage, tried solution per henrik lausten add metadata theme:
<resources> <metadata> <httpequiv>x-ua-compatible</httpequiv> <content>ie=8</content> </metadata> </resources>
but seems metadata in theme has no efect. when taking @ html source code found meta tag in header of sourcecode ie8 seems ignore it.
<meta content="ie=8" http-equiv="x-ua-compatible">
so how can metadata theme working? or maby other solution automatical add onrenderresponse code every xpage.
you can phaselistener or theme. when using theme can f.e. use styleclass don't need in xpage , compute value:
<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>
the phaselistener this:
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; } }
Comments
Post a Comment