javascript - 使用 &lt;iframe&gt; 和 <embed> 显示 SVG 和脚本的区别

标签 javascript html iframe svg

我正在尝试创建动态 SVG 图形,据我所知,创建动态 SVG 的唯一方法是使用脚本语言,所以我有几个问题,基本上我想加载或嵌入 SVG到 HTML 网页并使用网页中的输入控制图形,而不是在 SVG 文件中对 ECMAscript 进行硬编码。我不完全确定我是否应该使用嵌入标记或 iframe 来显示 SVG 这里是我对 SVG 和脚本的怀疑:

  1. 使用 <iframe> 有什么区别(在脚本方面)或者和 <embed>用于访问 SVG 元素的标签?也许有人可以包含简单的示例。
  2. SVG 可以评估元素属性中的数学表达式吗(只是为了确定)?

最佳答案

不要使用 <iframe><embed> .相反,将您的 SVG 直接嵌入 XHTML 中,如下所示:
http://phrogz.net/svg/svg_in_xhtml5.xhtml

这样,您就可以完全访问作为文档一部分的 SVG DOM。如该示例所示,您只需要确定使用 SVG 命名空间创建 SVG 元素(但不是属性)。您还必须确保您的网络托管服务商将 xhtml 的内容类型发送为 application/xhtml+xmltext/xml , 不是 text/html .

phrogz$ curl --silent -I http://phrogz.net/svg/svg_in_xhtml5.xhtml | grep "Type"
Content-Type: application/xhtml+xml

有关 JavaScript 处理与 HTML 混合的 SVG 的更多示例,请参阅 that same directory 中的各种 .xhtml 文件。 .一个特别引人注目的例子是 this one ,它动态创建数百个小型 SVG 文件作为像文本一样流动的内联元素。

关于你的问题:

Can SVG evaluate math expressions in element attributes(just to be sure)?

一般不会,不会。但是,SMIL Animation 的用法确实允许您随时间指定属性的各种插值方法。

最后,请注意您不必将 SVG 放入 HTML 中以使其动态化。您可以直接使用 JavaScript 编写 SVG 脚本。例如看这个测试文件(按绿色按钮开始模拟):
http://phrogz.net/svg/SpringzTest.svg

关于javascript - 使用 &lt;iframe&gt; 和 <embed> 显示 SVG 和脚本的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5692037/

相关文章:

javascript - 太多递归 - jquery - 自动完成

javascript - 如何重用 JSON 对象

javascript - HTML5 Canvas 翻转卡片动画

javascript - React中如何让用户下载数据(CSV)?

html - 将嵌入式谷歌地图设置为在页面加载时缩小

html - 删除 3 个 HTML 列之间的空格

javascript - 在滚动上添加类不起作用?

html - 在 HTML 中跨 2 个框架显示一个 DIV

iframe - 需要点击两次后退按钮才能触发 popstate/statechange 事件

javascript - iframe visual studio html5 windows 8 应用程序