这是元标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
它适用于除1以外的所有页面。
正在使用包含<cfinclude>
的coldfusion呈现页面,并在类似于MVC的目录结构中进行设置。标签被打破的页面有它自己的控制器(但只显示一个页面),但该控制器与另一个控制器完全相同。我不确定是什么原因引起的。
页面也采用模块化设计,页面的每个功能都以块的形式导入。每个页面都有自己独特的模块,所以问题在于其中一个块......我只是不知道那个问题可能是什么。过去几天我一直在梳理这些模块,但却找不到它。
可能导致此元标记不起作用的原因是什么?这里有太多代码粘贴,所以我希望得到一个可以引导我寻找解决方案的答案。我不相信它与Coldfusion有任何关系。
答案 0 :(得分:3)
首先,正如drezabek所说,检查结果 HTML。 IE对于特定的元头特别挑剔。根据我的经验,IE=EDGE
标题必须是整个页面上的第一个标题,并且必须是<head>
顶部的第一个项目。检查您的HTML,是这样吗?
其次,Coldfusion因额外的空白而出了名的麻烦。如果您的doctype上方有空格,或者可能是相关标题,则可能导致其出现故障。如有疑问,请始终在所有功能上使用output='false'
,甚至是cfscript
功能。此外,甚至一些原生CF方法也会添加空格。例如序列化一个ORM对象SerializeJSON(EntityLoad('blah'))
,你会看到它抛出一些空格。喜悦。
答案 1 :(得分:2)
答案必须在HTML中。查看有效页面的源代码和不可用的页面的源代码,并尝试查找可能导致问题的差异。如果你找不到它,可以在这里发布消息来源吗?
HTML确实是关键。完成后,找到导致错误HTML的函数应该很容易。
答案 2 :(得分:0)
似乎我错了。事实上,这个问题源于Coldfusion。
由于我没有创建有问题的页面,我忽略了一个重要的部分。创建它的人使用cfform输入标记和验证。导致Coldfusion将其插入标题末尾的呈现页面中:
<script type="text/javascript">
<!--
_CF_checkeditUserInfo = function(_CF_this)
{
//reset on submit
_CF_error_exists = false;
_CF_error_messages = new Array();
_CF_error_fields = new Object();
_CF_FirstErrorField = null;
//display error messages and return success
if( _CF_error_exists )
{
if( _CF_error_messages.length > 0 )
{
// show alert() message
_CF_onErrorAlert(_CF_error_messages);
// set focus to first form error, if the field supports js focus().
if( _CF_this[_CF_FirstErrorField].type == "text" )
{ _CF_this[_CF_FirstErrorField].focus(); }
}
return false;
}else {
return true;
}
}
//-->
</script>
现在我不完全确定这会导致元标记中断,但是当我删除导致生成此脚本的模块时,问题就解决了。当删除它时,文本比较显示两个页面中呈现的标题有0个差异。
我完全按setting the WebConfig in IIS itself修正了我的具体问题。