0

我有一个 Web 应用程序,可以在我的开发机器上的所有浏览器(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 处理 Javascript 的方式会根据 Web 应用程序的托管位置而有所不同?


更新

我现在已经在另一台服务器上进行了测试,奇怪的是它正在工作。此时的情况是,当 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
4

3 回答 3

0

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

于 2012-05-23T05:21:55.820 回答
0

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

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

于 2012-05-23T05:31:36.350 回答
0

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

XMLHttpRequestZoomify 组件试图下载图像以进行显示,但由于 IE 不支持对对象的跨域调用而失败。XDomainRequestIE 确实支持使用该对象的跨域调用。但是,Zoomify 组件不提供对XDomainRequest. Opera 11 也不支持跨域调用。

对于 IE 和 Opera 的问题,我的解决方法是不使用跨域调用,并通过与 Web 应用程序相同域上的 URL 使图像资源可用。

于 2012-05-24T04:08:03.200 回答