作为数据URI加载的SVG没有渲染<image>标签
SVG loaded as data URI doesn't render <image> tags
对于基本的
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="60" height="60">
<circle cx="30" cy="30" r="30" />
<image x="0" y="0" width="60" height="60" xlink:href="//cloudfront.net/mysite/pages/1234/attachments/original/1234567890/MyIcon.svg?123456789" />
</svg>
当我将其内联或作为外部资源加载时,它将按预期呈现圆圈和图像。但是,我采用完全相同的SVG,并使用数据URI将其渲染为<img>
,圆圈将加载,但不加载SVG <image>
:
var img = document.createElement('img');
// Grab our SVG element
var svg = document.querySelector('svg');
// Load its contents as a data URI
img.src = 'data:image/svg+xml;uft8,' + svg.outerHTML;
// Put this image on the bottom
document.body.appendChild(img);
这很奇怪,因为它必须是完全相同的内容。我认为这可能是CORS问题,但我在控制台中没有看到任何错误或警告。
jsfiddle: http://jsfiddle.net/jkoudys/x4uhch7a/7/
当SVG被用作图像时(在这种情况下通过<img>
标签),它必须在单个文件中完成,以保护用户隐私。
否则,托管在一个站点上的SVG图像可能会向另一个站点发送消息,表明它已被查看,而光栅图像则不能。您对图像功能的心理模型不应该取决于它是SVG图像还是光栅图像。
因此,在将SVG文件转换为数据URI之前,需要将嵌入的图像本身转换为数据URI。
相关文章:
- 在<页眉>标签
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- Image赢得't隐藏在滚动jQuery上
- iframe正在添加标签,需要删除它们
- 如何自动调整标签的高度以适应内容
- Jquery标签插件粘贴问题
- Twitter引导程序Typeahead-Id&标签
- 使用:new Image()控制加载html.src=html_URL
- 无法使用nodeJS在html中设置Image src
- Highcharts-如何在自定义格式化程序中获得默认的y轴标签格式化程序
- Morris.js折线图x轴标签在调整大小后消失
- JavaScript goto 标签如何使用内部循环
- 显示某个用户ID的某个标签的30张Instagram图片
- 标签客户端的设置值
标签和新的Image().src有什么区别
- 在页面上找到img标签,创建og:image元标签并附加到头部
- 在Video标签之前加载image标签
- 将css background-image: url(…)替换为
标签,并继续滚动效果
- 为什么Image 'complete'属性总是返回true,即使没有SRC标签
- Knockout js绑定base64 image到image标签