【问题标题】:KineticJS and VS2012KineticJS 和 VS2012
【发布时间】:2012-11-09 04:27:48
【问题描述】:

我已经在使用 KineticJS 的项目上工作了数周,没有任何问题。就在几分钟前,当我构建和调试我的页面时,它开始抛出错误。

这是错误: /scripts/kinetic-v4.0.3.js 中第 2258 行第 13 列未处理的异常

0x800a01b6 - Microsoft JScript 运行时错误:对象不支持属性或方法“indexOf”

我不知道发生了什么,它发生在任何项目中使用 KineticJS 的任何页面上......

我可以在 Firefox 中直接打开文件夹,然后一切正常。

有什么想法吗?

【问题讨论】:

    标签: kineticjs


    【解决方案1】:

    您使用的是旧版 IE 浏览器吗? IE6 或 IE7 不支持 indexOf 方法(虽然 canvas 也不支持)

    【讨论】:

    • 不,所有最新版本...我不知道发生了什么,我可能无意中更改了 VS 2012 中的设置或其他东西...请注意,这是一个 JScript 错误,而不是 Javascript ...
    • 听起来像是VS的问题,因为现代浏览器肯定支持indexOf方法(至少所有支持canvas的浏览器)
    • 我注意到我在 IE9 中也丢失了 CSS3 样式。我昨天下午试图追查发生了什么,但什么也没找到。系统还原修复了它。但这是不得已而为之的措施。这是我第二次在 VS2012 和 IE9 上遇到这样的问题。如果我不使用跨域 JSON 调用,我可以继续使用 chrome 或 firefox 进行调试,但情况并非如此,所以我必须找到修复方法。
    • :( 我知道我会因此而废话,但这是事实。我迫不及待地等待微软最终退出抽搐并在某一天真正消亡。
    • 当您从本地文件系统打开页面时,IE9 有时会以兼容模式打开(降至 IE7 或更低版本..),这会破坏很多东西。如果它再次发生,你可以检查一下。
    【解决方案2】:

    Microsoft 最大的 Internet Explorer 客户群是企业。企业已经投入了无数的金钱和时间来为旧版本的 IE 创建 Intranet 应用程序,这些应用程序会在更新/更符合标准的版本下崩溃。因此,对于在本地 Intranet 区域中检测到的网站,IE 将默认为兼容模式,以使 IE9 的行为类似于 IE7。

    Localhost 默认情况下恰好是本地 Intranet。这可能就是为什么在从 Visual Studio 进行 F5 调试时,尽管使用了 IE9,但没有任何较新的 JavaScript 对象和方法可用。

    幸运的是,您可以做一些事情。对于应用程序开发人员来说,最简单的方法是在页面标题中包含一个元标记,告诉 IE 在呈现该页面时忽略兼容模式:

    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    

    首选方法可能是让 Web 服务器在该 Web 应用程序的每个 HTTP 响应中包含此标头。要么配置 IIS 来执行此操作,要么在 web.config 中包含以下内容(我相信对于 IIS7+):

    <system.webServer>
       <httpProtocol>
          <customHeaders>
             <remove name="X-UA-Compatible"/>
             <add name="X-UA-Compatible" value="IE=Edge" />
          </customHeaders>
       </httpProtocol>
    </system.webServer>
    

    【讨论】:

    • +1 好杰森!非常深入。很高兴有一位 MS 大师帮助我们:)
    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多