2

我遇到了一个非常烦人的问题 - 我刚刚在 KineticJS 中制作了一个可爱的脚本 - http://test.manwe.cz/kolac.php

正如您所看到的,它在 Chrome/FF 中完美运行,但在 IE 中它只是说我不能使用方法“indexOf”并指向 Kineticjs.js 内的某个地方......我得到了最新的 KineticJS 版本,我试图调试它看起来问题出在 Kinetic.Stage 构造函数中。当我将其注释掉时,它可以工作(但显然没有其他工作)感谢您的帮助,我有点绝望。

4

1 回答 1

3

那么我也有同样的问题。所以我想出的最好的方法是在 javascript 中添加额外的方法。

    if (!Array.prototype.indexOf)
    {
      Array.prototype.indexOf = function(elt /*, from*/)
      {
        var len = this.length;

        var from = Number(arguments[1]) || 0;
        from = (from < 0)
             ? Math.ceil(from)
             : Math.floor(from);
        if (from < 0)
          from += len;

        for (; from < len; from++)
        {
          if (from in this &&
              this[from] === elt)
            return from;
        }
        return -1;
      };
    }

这将解决 indexOf 问题,但是这会带来另一个问题。最新版本似乎添加了get“Property”()和set“Property”()。

我的“猜测”是使用这行代码的 kinecticJS 的一些内部工作原理:

 this.context = this.element.getContext('2d');

“以我的拙见”应该在哪里

 this.setContext(this.getElement().getContext('2d'));

我的另一个“猜测”是这不能通过更改几行代码来解决。不过,我对此并不完全确定。我刚刚开始研究这个问题。我可能会建议降级版本,但我不确定这是否能解决问题。

更新:

所以再看一点,我发现这篇文章 HTMLCanvas 'getContext' is not a supported property or method 这意味着我以前的“猜测”都不正确。总结一下你最需要的就是你的html头数据中的这一行:

<meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge">

这解决了我在 IE 中遇到的问题(版本 9.0.8112.16421)

于 2012-10-16T00:05:14.327 回答