0

我们的 NoFlo 图形组件突然将自己全部压缩到一个不可编辑的框中,上面写着“WaitForward”。见附图。

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

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

控制台中的错误消息说:“TypeError:this.node.getTransformToElement 不是函数”

我将这个错误插入 Google 并看到其他人正在使用名为 clientIO 的东西遇到此问题,并且最近对 Google Chrome 的更新是罪魁祸首,因为 Chrome 最近删除了允许相关 js 运行的核心功能。

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

在此处输入图像描述

4

1 回答 1

0

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

来自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”文件的顶端。它似乎正在工作!(但是对于更好的位置的建议是非常受欢迎的。)

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

于 2016-04-12T21:12:40.930 回答