如何在javascript的几个页面之间共享音频元素
how to share audio element among several pages in javascript
我有一个网站,索引页只有:
- 包含iFrame
- 启动音频播放器并开始播放音轨。
不同的链接在iFrame中打开,所以我将所有内容隐藏在index.html下。我通过下面这行创建音频播放器:
var audio = document.createElement('audio");
我对范围感到困惑。我想从其他将在iFrame中打开的文档中访问这个音频变量。是否有一种方法来存储这个音频元素,以便任何页面都可以访问它?或者是否有一个函数允许按类型检索它,如getElement('audio')
?
我唯一的目标是开始在一个页面上播放音乐,并能够从另一个页面控制它(能够从另一个页面调用audio.play()
和audio.pause()
)
您可以通过访问父文档上下文并从中获取音频元素来实现这一点。
在父
中// Method 1
var audio = document.createElement('audio')
audio.id = 'my-specific-audio'
document.body.appendChild(audio)
// Method 2
window['my-audio-key'] = audio
// Method 1
var audio = window.parent.document.getElementById('my-specific-audio')
// Method 2
var audio = window.parent['my-audio-key']
一个警告:两个帧必须是相同的起源(域)。浏览器不允许跨域上下文访问
如果您正在使用框架,并且您想控制单个元素,那么您可以声明该元素并使用parent.
对象访问它。所以,你有:
var audio = document.createElement('audio");
上面的代码在index.htm
和每个页面中,您可以使用:
parent.audio.play();
parent.audio.pause();
注意:这只适用于当两个帧来自同一域
相关文章:
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- 可以't将几个数字设置为<输入类型=“;数字“>
- 当加载几个js文件时,defer属性应该如何工作
- 使用几个<脚本>标签不会't工作-只调用一个脚本
- 如何从数组中删除几个相同的项
- 包括php文件和几个js文件
- 在几个元素上模拟onclick事件
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 如何在几个jQuery对象上调用jQuery函数
- 用PHP/MMySQL和JavaScript填充几个HTML分区
- 点击几个按钮后动态网站更改
- d3日历视图:如何将所有内容放在一个svg中,而不是放在几个svg中
- 在JavaScriptES6中,如何从散列中只获取几个属性
- 多个 $(document).ready(function() 但只有前几个被解雇
- 检查Javascript变量的值是否在几个范围之间的最简单方法
- 如何在javascript的几个页面之间共享音频元素
- 通过排除其中的几个标签,获得两个标签之间的所有内容
- 看看当前日期是否在几个月之间的时刻j
- 在主干JS中,我在哪里定义几个视图之间共享的功能?
- 在几个标签之间获取文本