2011-10-10 54 views
3

刚开始使用Raphael。Raphael JS - paper.remove

现在我发现,paper.remove()正在生成一个脚本错误:

"SCRIPT5009: 'removed' is undefined 

这是一个脚本错误?

我的变量paper因此初始化:

var paper = new Raphael(document.getElementById('canvas_container'), 500, 500); 

我的HTML身体有:

<div id="canvas_container"></div> 

这是详细信息 - 我使用拉斐尔2.0我只是再次下载。运行IE9。以下是高亮的问题拉斐尔JS功能:

R.prototype.remove = function() { 

     eve("remove", this); 
     this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas); 
     for (var i in this) { 
      this[i] = removed(i); 
     } 
    }; 

行...删除(我)被高亮显示 - > SCRIPT5009:“删除”是不确定的

BTW我是新来的这个论坛。有没有办法回应“回答你的问题”以外的线程?

+0

除了回答问题外,您只能输入注释。 –

回答

0

我不知道你是否提供了足够的信息来回答这个问题。

  • 您使用的是什么版本的Raphael?
  • 什么浏览器?
  • 它是否正确加载 - 你能创建任何Raphael对象吗?

如果您只是在删除纸张,请参阅下面的小提琴。

JSFiddle

这似乎很好地工作,我与拉斐尔1.5.2

希望帮助(甚至略)。

+0

我刚试过你的JSFiddle并得到相同的错误。也许拉斐尔2.0版的问题? –

+0

我找到了一个Raphael 0.8.2版,并尝试过paper.remove()和IT WORKS。所以必须是最新发布版本中的错误。 –

+0

我发现这是在3小时前在github上打开的问题。建议的解决方法是改变这个[i] = removed [i];到这[i] = null; - 拉斐尔2.0图书馆4443行。这似乎工作 - 至少paper.remove()现在起作用。 –

4

我跑过这几次了。由sudoko-san建议的4443线方法在浏览器中工作,但不能与IE-7 & 8(使用raphael的整个点)向后兼容。

另一个解决办法是实现在你的JavaScript下面的代码:

try{ 
    paper.remove(); 
} 
catch (error) { 
    // this catches the error and allows you to proceed along nicely 
} 

这就是它!