关于 javascript:编写 SVG 脚本

关于 javascript:编写 SVG 脚本

Scripting SVG

我正在考虑开发一个类似于 stackoverflow 的网站,但答案也可能包括图纸(在这种情况下为示意图)。我想在答案表格中有一个区域,他们可以在不需要特殊插件等的情况下制作这个示意图。

  • 我们是否已经到了 SVG 已经或应该很快(1-2 年)达到临界质量的地步,以便设计一个以脚本运行 SVG 作为主要功能的网站是合理的(即,需要 Firefox 或其他兼容 SVG/AJAX 的浏览器)?
  • 学习跨平台 SVG 脚本(可能在 javascript 中)有哪些好的资源?
  • -亚当·戴维斯


    Raphael 对跨浏览器矢量图形问题的看法很有趣。


    很遗憾,我没有答案,但我确实提供了三个您可以查看的项目的指针。

    第一个是 Sun Labs 的 Dan Ingalls(没错,就是 Dan Ingalls)的 Lively Kernel。它是基于 SVG 的 JavaScript 中 Smalltalk 虚拟世界的实现。更准确地说,它是在 JavaScript 中使用 SVG 和 Squeak Smalltalk 的(部分)端口在 JavaScript 中实现的 Morphic GUI 框架。

    或者,如果您不是 Smalltalker 并且以上内容对您没有意义:它是一个操作系统,用 JavaScript 编写,JavaScript 解释器作为 CPU,SVG 作为显卡,浏览器作为计算机.

    当涉及到 JavaScript 和 SVG 时,这几乎是最极端的。它只能在 Safari 3 中完全运行,部分在 Firefox 3 中运行,尽管 Internet Explorer 也有一个实验性端口。

    第二个项目是 John Resig 将 Processing 可视化语言移植到 JavaScript 的 Processing.js。正是由于您提到的问题,它使用 canvas 元素而不是 SVG。然而,这个仅适用于 Firefox 3.

    第三个是 Useless Pickles 在 JavaScript 中的 Real-Time 3D。它只使用 JavaScript、DOM 和 CSS,而不使用 SVG 或 canvas 或 Flash 或其他任何东西。它几乎可以移植到任何浏览器,包括 Internet Explorer 7 及更高版本。做 2D 应该比这更容易。

    在这三个项目之间,您应该能够找到一些灵感,还可以找到一些尝试使用 JavaScript 和 SVG 或 JavaScript 和图形来突破极限的人,他们可以告诉您哪些有效,哪些无效。

    结论:做跨浏览器 SVG 或跨浏览器 canvas 几乎是不可能的,但有点疯狂,没有 SVG 或 canvas 的跨浏览器图形是可能的。


    SVGWeb 是一个脚本,它使用 Flash 将接近原生的 SVG 功能添加到 IE。所有其他主流浏览器都支持 SVG。

    http://code.google.com/p/svgweb/


    正如@jwmittag 提到的, canvas 是一个选项。

    它适用于 Saffari 和 Firefox 3、Opera 9,并且人们正在开发对 IE 的支持。

    您可以轻松捕获与当前工具和属性相关的鼠标点击。
    在每个页面显示上重绘画布。

    我刚刚使用 canvas 完成了一个项目,它是一个简单且非常强大的 API,特别是如果您曾经做过任何 OpenGL 或 Cairo 工作。

    祝你好运,听起来是个很酷的项目。


    1/ 可能永远不会——如果 IE 想要添加它,那么我会想要的,尽管它现在已经这样做了;但是有一些使用 SilverLight 和 Gecko 来提供渲染的解决方法。另一方面,有可用的跨浏览器图形 API。我使用 XULRunner 和 SVG 完成了较大的前端,但网络上没有任何东西必须迎合 IE。

    2/ 我最常提到的两个是 mozilla.org 上的 SVG 页面和这个 SVG DOM 参考。我所有的 SVG 链接都在这里美味

    在 http://www.bpel4chor.org/editor/ 现有一位编辑器;此外,如果您想要的只是所有弧线都在网格上的示意图,那么您可以使用没有 SVG 的 div 和图像很好地做到这一点。或者你可以走低保真路线


    推荐阅读