与IIS 7相比,当IIS应用程序托管在IIS 6上时,IE的行为会有所不同。卡西尼

时间:2012-05-23 05:18:55

标签: javascript html internet-explorer iis iis-6

我的开发计算机上的所有浏览器(IE9,Firefox,Chrome,Opera和Safari)都有一个可以正常运行的网络应用程序。当我将Web应用程序部署到测试服务器时,IE将开始阻塞特定的javascript组件(Zoomify)。

我可以在一个选项卡中使用开发托管的Web应用程序打开IE 9,在另一个选项卡中使用测试服务器Web应用程序,只有开发托管的应用程序才能运行。除了web.config。

之外,两台计算机上的Web应用程序代码完全相同

开发人员工具将这两个网站显示为Browser Mode: IE9 Document Mode: IE9 standards

Zoomify组件在以下行中失败:

c.onreadystatechange=null

错误:

SCRIPT13: Type mismatch

这里发生了什么?为什么IE根据Web应用程序的托管位置处理Javascript的行为方式不同?


更新

我现在已经在另一台服务器上进行了测试,奇怪的是它正在运行。此时,情况是当Web应用程序托管在IIS 6上时,javascript文件将在IE中失败。

Opera中存在类似的问题,但我没有收到错误消息。

Dev Machine
Windows 7
Web Server: Cassini
Status: Working

Test Server 1
Windows Server 2003
Web Server: IIS 6.0
Status: Not working

Test Server 2
Windows Server 2008
Web Server: IIS 7.0
Status: Working

3 个答案:

答案 0 :(得分:0)

我的猜测是在两个不同的环境之间部署应用程序之间的路径差异......这可能会导致糟糕的JS参考  您是否在测试服务器上使用虚拟目录等?

答案 1 :(得分:0)

你在脚本元素上声明了这个类型吗?我认为这是或者如果您有指定X-Content-Type-Options的http响应标头:nosniff

你可以在这里引用:http://blogs.msdn.com/b/ieinternals/archive/2010/09/27/ie9-beta-google-image-search-javascript-content-type-and-nosniff.aspx

答案 2 :(得分:0)

失败的javascript行c.onreadystatechange=null具有误导性。通过调试Zoomify javascript代码,我能够确定在调用堆栈中进一步生成错误。

Zoomify组件试图下载要显示的图像,但由于IE不支持XMLHttpRequest对象上的跨域调用而失败。 IE确实支持使用XDomainRequest对象进行跨域调用。但是,Zoomify组件不支持XDomainRequest。 Opera 11也不支持跨域调用。

我对IE&问题的解决方法Opera不使用跨域调用,并通过与Web应用程序位于同一域的URL来提供图像资源。