NoFlo UI组件突然中断..." TypeError:this.node.getTransformToElement不是函数"

时间:2016-04-11 20:58:44

标签: svg jointjs noflo

我们的NoFlo图形组件突然压缩成一个不可编辑的框,表示" WaitForward"。见附图。

有一段时间,除了Opera之外,每个浏览器都会发生这种情况,所以我可以去那里更新图表。然后,几周之后,即使Opera也不会渲染组件,所以现在我无法再向现有的NoFlo表单添加逻辑。

我们几乎没有接触与NoFlo相关的代码,因此我不认为我们的环境发生了任何变化。我的理论是,最近更新了浏览器(例如Chrome,曾经是用于编辑的稳定浏览器),并且此工具需要某种更新才能正确呈现。然而,我在NoFlo GitHub指令中找不到这个问题的参考,并且看起来没有人在StackOverflow上遇到这个问题(当然,直到现在)。

控制台中的错误消息显示:: " TypeError:this.node.getTransformToElement不是函数"

我把这个错误搞砸到谷歌,看到其他人正在经历一个名为clientIO的事情,并且谷歌Chrome最近的更新是罪魁祸首,因为Chrome最近删除了允许相关js运行的核心功能。

但是......我该如何解决这个问题呢?这是个问题!

enter image description here

1 个答案:

答案 0 :(得分:0)

看起来Google Chrome的最新更新是罪魁祸首。 直接来自jointjs.com的网站::

Link to announcement from jointjs.com

  

公告:getTransformToElement()polyfill 2015年11月12日

     

不幸的是,新版Chrome(48)删除了JointJS / Rappid的核心功能。此功能是SVGGraphicsElement.getTransformToElement()函数。删除该方法背后的动机是 - 根据Chrome团队 - 打开有关此方法应该如何表现的问题。

     

为了克服未来Chrome版本的兼容性问题,我们准备了一个确保此方法存在的polyfill。在发布新版本的JointJS / Rappid之前(或者,如果您因任何原因,不想升级),请在加载应用程序JavaScript之前包含以下代码:

     

SVGElement.prototype.getTransformToElement = SVGElement.prototype.getTransformToElement || function(toElement){       return toElement.getScreenCTM()。inverse()。multiply(this.getScreenCTM());   };

我不确定将此代码放在我的noflo目录中的确切位置。所以我试着把它放在“app / js / main.js”文件的顶部。它似乎工作! (但建议更好的位置是非常受欢迎的。)

我希望这可以帮助那些遇到同样问题的人。