【问题标题】:IE not loading page with Javascript and RaphaelIE 无法使用 Javascript 和 Raphael 加载页面
【发布时间】:2012-03-26 14:20:56
【问题描述】:

我正在测试一个在 Firefox (Win/Mac)、Chrome (Win/Mac) 和 Safari 上运行良好的网站。不幸的是,我在使用 Internet Explorer 时遇到了困难。我收到以下错误消息:

SCRIPT65535: Unexpected call to method or property access. 
raphael-min.js, line 8 character 64961

我查看了调试输出,看起来好像只是将我带到了Raphel 库的一部分:

c=a.getScreenCTM()||a.createSVGMatrix()

我已在线搜索此错误消息,但我不明白与此案例相关的解决方案是什么,因为我不知道是什么导致了问题。我也在使用 jQuery 库。是否有任何测试可以让我了解有关问题根源的更多信息?

【问题讨论】:

  • 您是否有机会发布一个链接或制作一个重现问题的小提琴?另外,您测试的是哪个版本的 IE?
  • 尝试使用未缩小的Raphael库;了解上下文会更容易。
  • Internet Explorer 的哪个版本?
  • 您使用的javascriptraphaeljs 代码是什么...我怀疑这是raphael 的问题,更可能是您的JS 代码。
  • 我不知道如何创建一个小提琴,因为我有很多不同的部分我不知道如何包含。我正在使用 IE 8。看起来 IE 不喜欢在不使用var 的情况下声明变量。当我使用 Raphael 时,其中一些悄悄出现(尽管我不确定这是唯一的问题)。

标签: javascript jquery internet-explorer-8 raphael


【解决方案1】:

我刚刚找到了如何修补它,以保留 Raphael 的压缩版本。

替换(不要忘记昏迷):

c=a.getScreenCTM()||a.createSVGMatrix(),

这样(别忘了结尾的空格):

c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(e){c=a.createSVGMatrix()};var 

工作正常! :)


意思是:

  1. c; : 变量 c 的声明,并停止第一条指令。
  2. try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(e){c=a.createSVGMatrix()}; : 我们的指令,被 try/catch 包围,以避免 IE 错误
  3. var + 一个空格:(别忘了空格!)让我们继续声明变量

【讨论】:

    【解决方案2】:

    我发现这是压缩(js 文件)的问题。我有完全相同的问题,我一直在寻找解决方案。你猜怎么了?我用未压缩的 Raphael 文件试了一下,瞧!没有更多的问题。压缩文件似乎需要调整。

    【讨论】:

    • 感谢您的反馈:在我的情况下,使用未压缩版本解决了问题,IE9 上出现了女巫。
    • 很高兴知道问题(和解决方案)是相同的。我希望尽快上传一个修复了该问题的更新压缩版本。
    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多