文章转载自 我自己的小破站,大佬们动动手指,进来瞧一瞧

问题

在项目开发的过程中,打算通过下面的方法在收到实时消息的时候通过postMessage通知iframe内部的video元素进行播放。但是在实际尝试后发现,这样设置allow=“autoplay”属性后,仍然需要用户主动与iframe进行交互后才可以通过代码触发video的播放。

// 元素定义
const ifrm = document.createElement('iframe');
ifrm.src = 'xxx.html';setTimeout(() => {ifrm.setAttribute('allow', 'autoplay');
}, 10);// 实际使用
onRecvMessage(() => {ifrm.postMessage({ cmd: 'videoPlay' }, '*')
})

原因

有大佬对iframe的属性生效时机做了测试。可以看到,通过代码动态修改allow属性并不会更新已加载内容的iframe内部当前的功能策略权限。而当iframe的内容被重新加载后,allow属性能够生效。总而言之,allow属性对应的功能策略(Feature Policy)的生效时机是在iframe元素渲染内容(即DOM Build),而且无法在一个已经加载完成的iframe元素上动态修改。

解决方法

1. 构建时设置allow属性

const ifrm = document.createElement('iframe');
ifrm.setAttribute('allow', 'autoplay');
ifrm.src = 'xxx.html';

2. 更改allow属性后重新加载

const ifrm = document.getElementById('id_of_frame');
ifrm.setAttribute('allow', "autoplay");
ifrm.src = ifrm.src;

Iframe的allow属性生效时机相关推荐

  1. android chrome iframe设置src属性无法启动app

    0x01 Android Intents with Chrome Android有一个很少人知道的特性可以通过web页面发送intent来启动apps.以前通过网页启动app是通过设置iframe的s ...

  2. 用javascript 动态改变iframe 的src 属性

    原文地址为: 用javascript 动态改变iframe 的src 属性 <iframe id="xx"></iframe> <iframe id= ...

  3. Android让Diglog中的元素fill_parent属性生效

    lodingDialog = new Dialog(this,R.style.dialog_noBorder);lodingDialog.setContentView(R.layout.file_ex ...

  4. frame或者iframe的contentwindow属性

    contentwindow属性是指指定的frame或者iframe所在的window对象: <script> function fnnavigate() { for(i=0;i<do ...

  5. php改变iframe的src,js动态改变iframe的src属性

    今天在Chrome下显示如下的iframe,src设置为空,但打开页面时iframe一直处于刷新状态,看了下面的博文,觉得是不是默认不显示时src应该写成about:blank,明天回去测试下,回来更 ...

  6. html5 iframe 属性,html中关于iframe的allowTransparency属性的详解

    IE5.5开始支持浮动框架的内容透明.如果想要为浮动框架定义透明内容,则必须满足下列条件. 1.与 iframe 元素一起使用的 allowTransparency 标签属性必须设置为 true. 2 ...

  7. js动态改变iframe的src属性

    今天在Chrome下显示如下的iframe,src设置为空,但打开页面时iframe一直处于刷新状态,看了下面的博文,觉得是不是默认不显示时src应该写成about:blank,明天回去测试下,回来更 ...

  8. input 标签 autofill属性生效导致的输入框背景色变成黄色(或其他色)的解决办法

    vue + elementui 登录页 输入框autofill属性导致的背景色变色问题(使用原生input也会有) 方法一: 用box-shadow效果遮住:box-shadow:0 0 0px 10 ...

  9. 【Jquery】------- iframe标签获取属性src中的标签(元素)input值实例代码

    一,如下iframe标签代码: <iframe id="iframe" src="/pub/job/cron_editor/CronEditor.html" ...

  10. js HTML <iframe> srcdoc 属性

    HTML srcdoc 属性 <iframe srcdoc="<html><body></body></html>" src= ...

最新文章

  1. 使用myeclipse的第一步
  2. SVN:This client is too old to work with working copy…解决的方法
  3. iphone开发 如何在NSMutableDictionary中放入基本数据类型
  4. 【人脸表情识别】情绪识别相关会议、比赛汇总(2018-2020)
  5. 接口自动化测试系列(二):深入分析HTTP状态码502
  6. Mybatis-plus之RowBounds实现分页查询
  7. TOJ5398: 签到大富翁(简单模拟) and TOJ 5395: 大于中值的边界元素(数组的应用)...
  8. 算法设计与分析——分治与递归策略——hanoi问题
  9. Android转载一:Android文件命名规范
  10. cmd oracle sys登录_Oracle 数据库、表、方案的逻辑备份与恢复
  11. linux处理除零异常,linux – 如何在x86程序集中使用中断来触发被零除错误异常?...
  12. 【网络安全】加解密算法最详解
  13. PLC液压控制系列之比例流量阀结构分析
  14. Linux日本云服务器安全设置的基本步骤
  15. 施努卡:机器视觉尺寸检测(机器视觉表面缺陷检测)
  16. 关于印发《测绘地理信息质量管理办法》的通知
  17. Android 12上焕然一新的小组件
  18. 【Unity3D】水波特效
  19. 微型计算机曾经使用过的字长,自考《计算机应用基础》模拟试题七
  20. 浏览器主页被2345劫持捆绑解决方案---极其简单!

热门文章

  1. MATLAB图形绘制--极坐标和对数图像
  2. 用户研究中的定性研究、定量研究
  3. oracle怎么恢复误删除的列,三种方式恢复oracle数据库误删除的数据
  4. python计算相关性显著性p值_基于python如何实现计算两组数据P值
  5. PS 色阶、曲线、色相饱和度
  6. 6.3深度优先遍历和广度优先遍历
  7. 思科模拟器配置静态路由(下一跳使用IP)
  8. LimeSDR官方系列教程(四):To Pothos and Beyond
  9. 启用Administrator账户解决windows10家庭版修改c盘Users下的中文用户名
  10. 图像的像素、分辨率、像元尺寸、大小、清晰度的关系