php - Graphviz 关注一个节点

标签 php javascript iframe graphviz

我正在创建一个从 XML 文件(节点+边)创建图形的场景。该图在 iframe 中生成为 SVG。我想要做的是能够单击一个节点并聚焦该节点(不同的颜色,滚动到适当的位置)。

我得到的是,我在传递给 graphviz 的属性中传递了一个 URL,该 URL 在查询字符串中具有焦点节点,因此 my-url.php?focus=2 将焦点节点 id 2。然后,在属性创建,我将焦点节点的颜色更改为亮黄色。

问题是我找不到向下滚动到该节点的方法。我必须通过向下滚动手动搜索节点。有没有办法获取焦点节点的坐标并将其传递给托管 iframe 的窗口?这样,我就可以使用 Javascript 向下(或向右)滚动。

有什么想法吗?我不是在寻找完整的解决方案。如果可行,我可以接受一种策略(并且可以在最新的浏览器上运行。它不必向后兼容)。

谢谢。

最佳答案

您可以通过不带 -T 选项调用 dot 来检索 SVG 中节点的位置(它会生成点文件,其中节点使用“pos”属性进行注释,指示它们的绘制位置。然后,当 $_GET[ 'focus'] 是 42(即请求 my-url.php?focus=42),my-url.php 应该生成 Javascript 代码,使用类似 scrollTo (http://stackoverflow.com/questions/1192228/scrolling-an-iframe-with-javascript)。

为确保即使图像已缩放(它是 SVG,对)也能正常工作,您需要将滚动到的位置乘以 SVG 的总宽度与点图宽度之间的比率由“大小”图形属性设置(高度相同)。

关于php - Graphviz 关注一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5751408/

相关文章:

php - 在 Emacs 中使用 SQL 查询编写 PHP

php - 跟踪代码的来源 (PHP)

php - 最好是 jQuery/可能是 PHP : get content of H1 to TITLE for SEO

javascript - 如何在 Chrome 中通过 window.open 打开多个电子邮件客户端窗口?

php - 如何在动态创建的id选择器上显示ajax结果?

java - 在 java servlet 中包含 javascript 的最佳方式

javascript - 在不显眼的 JavaScript 中,一旦您分离了内容和脚本,您如何处理添加内容的脚本?

javascript - 当可见性改变时,IFrame 滚动条在 chrome 上消失

javascript - 如何从外部源捕获console.log?

javascript - 嵌入 iframe 不返回响应式设计?