是否可以在 cfajaximport 生成的代码之前插入元标记 X-UA_compatible?

Posted

技术标签:

【中文标题】是否可以在 cfajaximport 生成的代码之前插入元标记 X-UA_compatible?【英文标题】:Is it possible to insert the meta tag X-UA_compatible before the code generated by cfajaximport? 【发布时间】:2014-02-26 18:27:31 【问题描述】:

我有这个元标记:

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />

我需要放在标签之前。但我在 cf 代码中也有这样的:

<cfajaximport scriptsrc="cfscripts/" css-s-rc="cfscripts/ajax/">

在页面的源代码中生成一大堆指令,像这样:

script type="text/javascript">/* <![CDATA[ */_cf_loadingtexthtml="<img alt=' '             src='/CFIDE/scripts/ajax/resources/cf/images/loading.gif'/>";
_cf_contextpath="";
_cf_ajaxscriptsrc="/CFIDE/scripts/ajax";
_cf_jsonprefix='//';
_cf_clientid='34E7CEE60001694E2BAD23DBDEE4C6DE';/* ]]> */

这使我的元标记不再有用了。

有没有办法强制 ColdFusion 把这个标签放在开头?

提前谢谢你, 米歇尔

【问题讨论】:

页面标题中元标记的顺序不应该有任何区别。如果该 javascript 导致 X-UA 兼容元标记出现问题,则将元标记进一步向上移动不太可能解决您的问题。 嗨,邓肯,你错了,在这个页面 (msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx) 上写的是:'X-UA-Compatible 标头不区分大小写;但是,它必须出现在网页的标题(HEAD 部分)中,位于除标题元素和其他元元素之外的所有其他元素之前。这也可以在 stackovreflow 的其他主题中找到。 【参考方案1】:

您可以将 X-UA-Compatible 指定为真正的 HTTP 标头(而不是在元标记中使用 HTML 的 http-equiv),这将确保它在任何 HTML/JS 输出之前应用。

最简单的方法可能是在前端 Web 服务器级别设置它 - 如何执行此操作取决于您的 Web 服务器(例如Apache、IIS、nginx 等),或者您可以使用cfheader 用 CF 来做:

<cfheader name="X-UA-Compatible" value="IE=9; IE=8; IE=7; IE=EDGE" />

【讨论】:

嗨彼得,谢谢你的回答。我尝试了 cf 解决方案,因为我们有多个应用程序并且无法更改 apache 中的某些内容:)。使用 cfheader 为我提供了 ie9 的文档模式作为 ie9standards 而不是 ie7standards。只有浏览器模式保持在兼容视图中。这已经是一个改进,谢谢,米歇尔

以上是关于是否可以在 cfajaximport 生成的代码之前插入元标记 X-UA_compatible?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Mac OS X 上通知 DTrace 动态生成的代码?

Flutter编译时生成代码之 code_builder

python 之生成器

动软代码生成器之模板功能介绍

是否可以在不使用插件的情况下配置 maven 来编译生成的源代码?

从零写一个编译器(十三):代码生成之遍历AST