花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 18|回复: 1

iframe:srcdoc 属性

[复制链接]
  • TA的每日心情
    奋斗
    2026-3-13 08:00
  • 签到天数: 1757 天

    [LV.Master]伴坛终老

    3142

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2026-3-13 08:03 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    很多朋友都会使用 iframe 发帖。<iframe>标签允许Web页嵌入外部Web页,通过src属性实现。例如:

    这将在当前页面嵌入一个第三方Web页,默认尺寸 300*150(px),其中的src属性值只要地址有效就会同步载入地址指向的页面。效果如下:

    作为内联框架,iframe标签还有一个和src属性相关的属性,srcdoc,该属性值不是URL地址,而是HTML代码。试看代码和效果:

    这意味着什么?我们可以轻而易举地动态改变iframe标签的整体内容!

    当然,以src属性嵌入的第三方Web页,如果同源,或支持跨域读写,我们也可以读取和更改其内容,但过程相对繁琐、复杂且有一定难度。而使用srcdoc动态生成iframe的文档内容,我们可以真正同步地对内容进行控制,简单且高效。

    来看看一个简单的例子:通过当前页面控制 iframe 的 srcdoc 属性——

    例中的button按钮就在当前页面,点击它可以控制iframe框架的整体内容。不过,这是在操作整个嵌入的Web内容,想要单独操做iframe里的指定元素,仍需按常规的方式进行,例如获取 iframe 里的 id="mydiv" 元素:

    // 假设iframe的id="ifm"
    const frmWindow = document.getElementById('ifm').contentWindow;
    // 获取id="mydiv"的元素
    const mydiv = frmWindow.document.querySelector('#mydiv');

    这样,在当前Web页操作iframe里的元素 mydiv就和操作本页面的其它元素一样。

    再看另一个例子:动态创建iframe并令其运行本页特定容器中的代码(含JS代码)——

    效果:

    上述代码只是一个简单的演示,但展现了iframe srcdoc的强大,即支持JS代码的在线运行而无需分离HTML和JS代码然后再进一步加入运行JS的机制,非常方便。

    iframe标签有广泛的应用场景,不过用好它也不容易,需要深入学习研究。

    评分

    参与人数 1威望 +30 金钱 +60 经验 +30 收起 理由
    杨帆 + 30 + 60 + 30 匠心独运,细节精致入微!

    查看全部评分

  • TA的每日心情
    奋斗
    2026-3-13 13:24
  • 签到天数: 475 天

    [LV.9]以坛为家II

    352

    主题

    3584

    回帖

    2万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2026-3-13 15:27 | 显示全部楼层
    第一次了解 iframe 的 srcdoc 属性,谢谢马老师精彩讲授
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2026-3-13 16:02 , Processed in 0.065741 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表