V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
est
V2EX  ›  HTML

为啥 img 和 embed 标签对同一个 svg 展示效果不一样?

  •  
  •   est ·
    est · Oct 17, 2023 · 2811 views
    This topic created in 930 days ago, the information mentioned may be changed or developed.

    遇到个蛋痛事。对于同一个 1.svg ,页面里分别用 <img><embed> 嵌入

    <img src="1.svg">
    
    <embed src="1.svg">
    

    前者不能展示 svg 内部的<image>图片 ,后者能展示。

    在线 demo 有人遇到过这个问题吗?

    4 replies    2023-10-18 10:47:54 +08:00
    sanmaozhao
        1
    sanmaozhao  
       Oct 18, 2023   ❤️ 1
    查到的资料说,img 标签嵌入的 svg ,是无法加载任何外部资源的
    包含 svg 文件里引用的 image 、font 等

    请看这个链接
    https://vecta.io/blog/best-way-to-embed-svg

    This is mainly because images with <img> tags are not allowed to refer to external resources including CSS, fonts and scripts, for security reasons.

    但是我目前还没查到官方的文档说明
    sanmaozhao
        2
    sanmaozhao  
       Oct 18, 2023   ❤️ 2
    找到权威一些的文档了,看来就是这个原因了

    https://www.w3.org/wiki/SVG_Security

    Markup languages like HTML (and SVG itself) can reference SVG as an image with the <img> tag (HTML namespace) or <image> tag (HTML or SVG namespace).

    If an SVG file is fetched as image, then certain requirements apply to this document:

    The SVG document is not allowed to fetch any resources. This also applies to scripts, stylesheets or images.
    est
        3
    est  
    OP
       Oct 18, 2023
    @sanmaozhao 感谢。。自己也折腾出来了个相同结论。。。https://blog.est.im/2023/stdout-10
    sanmaozhao
        4
    sanmaozhao  
       Oct 18, 2023
    哈哈,找到原因应该回复一下本贴啊

    我也查了有一会儿,才找到根源

    也是顺着几个链接找到的,和你博客里贴的基本相同
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1078 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 23:58 · PVG 07:58 · LAX 16:58 · JFK 19:58
    ♥ Do have faith in what you're doing.