"对象不支持属性或方法'querySelector'"在IE11中按机器名访问网站时显示

K. *_*tes 18 iis internet-explorer angularjs

我在防火墙内的Windows Server 2012 R2主机上部署了一个angularjs站点到IIS.当我RDP进入服务器,然后从那里导航到

http://localhost/Foo 
Run Code Online (Sandbox Code Playgroud)

在IE11中,一切都像预期的那样;我的页面被提供给浏览器.

但是,当我尝试浏览时

http://servername/Foo
Run Code Online (Sandbox Code Playgroud)

在IE11中,我从angular.js的第1016行引发​​错误

"对象不支持属性或方法'querySelector'"

这仅发生在Internet Explorer中.
在Chrome和Firefox中测试的一切都很好.

有没有人知道为什么会发生这种情况以及我可以采取哪些措施来解决这个问题?

K. *_*tes 43

这个问题的解决方案是添加

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
Run Code Online (Sandbox Code Playgroud)

标签作为第一个项目Head.

元标记必须是IE头部中第一个用于获取边缘模式的标记; 否则,它会忽略应该指示IE不会陷入怪癖模式的DOCTYPE.

我在部署时将元标记作为事后补充包含在内,并在头部底部输入了元标记.

MSDN |指定旧文档模式

X-UA-Compatible标头不区分大小写; 但是,它必须出现在除了title元素和其他元元素之外的所有其他元素之前的网页标题(HEAD部分)中.

Internet Explorer中的默认兼容性设置会导致IE 对内部站点和外部站点的静默行为不同.

设置X-UA兼容的元标记明确声明浏览器应该在边缘模式下接收内部网站而不需要管理兼容性设置,但必须将标头指定为头部中的第一个标记才能产生此效果.

  • 需要meta我不想管理兼容性设置.这完全没必要.元标记强制浏览器公开我需要的主机API,而不管该用户的兼容性设置如何.为什么有阻力支持设置x-ua兼容元标记的无痛选项?它会覆盖用户的兼容模式设置. (4认同)
  • 啊,对不起,我现在看到你是通过内联网访问的.默认情况下,Intranet站点将加载到Compat View中.检查"兼容性视图设置"的齿轮图标以修改此行为. (2认同)