Iframe 插件
说明
通过该插件,你可以轻松在 主页面 里控制 iframe 页面里的播放器。
如在 主页面 里通过代码控制 iframe 播放器的功能,或者获取 iframe 播放器的值等等
演示
👉 查看完整演示
安装
通过 npm 安装:
$ npm install artplayer-plugin-iframe
通过 yarn 安装:
$ yarn add artplayer-plugin-iframe
通过 script 安装:
<!-- 本地 -->
<script src="path/to/artplayer-plugin-iframe.js"></script>
<!-- jsdelivr -->
<script src="https://cdn.jsdelivr.net/npm/artplayer-plugin-iframe/dist/artplayer-plugin-iframe.js"></script>
<!-- unpkg -->
<script src="https://unpkg.com/artplayer-plugin-iframe/dist/artplayer-plugin-iframe.js"></script>
然后你可以通过 window.artplayerPluginIframe 访问到插件函数
使用
index.html
index.html
<!DOCTYPE html><html> <head> <title>ArtPlayer</title> <meta charset="UTF-8" /> </head> <body> <iframe id="iframe"></iframe> <script src="path/to/artplayer-plugin-iframe.js"></script> <script> const iframe = new ArtplayerPluginIframe({ // iframe 元素 iframe: document.querySelector('#iframe'), // iframe 地址 url: 'path/to/iframe.html', }); // 向 iframe 发送消息 iframe.commit(() => { var art = new Artplayer({ container: '.artplayer-app', url: 'path/to/video.mp4', }); }); </script> </body></html>iframe.html
iframe.html
<!DOCTYPE html><html> <head> <title>ArtPlayer</title> <meta charset="UTF-8" /> <style> html, body { width: 100%; height: 100%; margin: 0; padding: 0; } </style> </head> <body> <div class="artplayer-app" style="width: 100%; height: 100%;"></div> <script src="path/to/artplayer.js"></script> <script src="path/to/artplayer-plugin-iframe.js"></script> <script> // 注入脚本,接收来自实例的消息 ArtplayerPluginIframe.inject(); </script> </body></html>实例接口
commit
- 类型:
Function
将消息推送到 iframe,该函数将在 iframe 内部运行
iframe.commit(() => {
var art = new Artplayer({
container: '.artplayer-app',
url: 'path/to/video.mp4',
});
});
iframe.commit(() => {
art.seek = 5;
});
// 获取来自 iframe 的值
(async function () {
// 使用 return 关键词
var currentTime = await iframe.commit(() => {
return art.currentTime;
});
// 或者使用 resolve 方法
var currentTime2 = await iframe.commit((resolve) => {
setTimeout(() => {
resolve(art.currentTime);
}, 1000);
});
})();
message
- 类型:
Function
接收来自 iframe 的消息
iframe.message((event) => {
console.log(event);
});
destroy
- 类型:
Function
销毁实例,销毁后无法与 iframe 通信
iframe.destroy();
Iframe 接口
Tip
Iframe 接口 只能运行在 iframe 里
inject
- 类型:
Function
注入脚本,接收来自实例的消息
ArtplayerPluginIframe.inject();
postMessage
- 类型:
Function
将消息推送到实例
iframe.message((event) => {
console.log(event);
});
iframe.commit(() => {
ArtplayerPluginIframe.postMessage({
type: 'currentTime',
data: art.currentTime,
});
});