mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-09 03:46:16 -08:00
40 lines
22 KiB
JavaScript
40 lines
22 KiB
JavaScript
import{_ as i,o as n,c as t,ak as a,j as e}from"./chunks/framework.xxfEszSJ.js";const o=JSON.parse('{"title":"VAST 广告","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/vast.md","filePath":"plugin/vast.md","lastUpdated":1789499699000}'),l={name:"plugin/vast.md"};function p(r,s,h,k,d,E){return n(),t("div",null,s[0]||(s[0]=[a(`<h1 id="vast-广告" tabindex="-1">VAST 广告 <a class="header-anchor" href="#vast-广告" aria-label="Permalink to "VAST 广告""></a></h1><p><a href="./../en/plugin/vast.html">English</a></p><p>通过 Glomex VAST IMA Player 和 Google IMA SDK 请求并展示广告。与 <a href="./ads.html">Ads 插件</a>的本地倒计时广告不同,这里使用广告标签地址或 VAST 响应。SDK 脚本和广告资源需要可访问,网络、VPN 或广告拦截规则可能阻止加载。本页描述未发布重构分支,线上示例不是当前候选的验收证据。</p><h2 id="安装和示例" tabindex="-1">安装和示例 <a class="header-anchor" href="#安装和示例" aria-label="Permalink to "安装和示例""></a></h2><div class="language-sh vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> artplayer</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> artplayer-plugin-vast</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Artplayer </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'artplayer'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> artplayerPluginVast </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'artplayer-plugin-vast'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>使用 script 时先加载 ArtPlayer,再加载 <code>dist/artplayer-plugin-vast.js</code>,全局名为 <code>artplayerPluginVast</code>。插件通过其 Glomex 依赖加载 IMA,无需另造加载器。以下保留<a href="https://artplayer.org/?libs=./uncompiled/artplayer-plugin-vast/index.js&example=vast" target="_blank" rel="noreferrer">原在线示例</a>;其中的外部广告地址并非本地测试夹具。</p>`,7),e("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-vast/index.js"},"▶ Run Code",-1),a(`<div class="language-js vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Depends on:</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// https://glomex.github.io/vast-ima-player/</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Google's IMA SDK are blocked by your Ad blocker.</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// Please Turn Off Your Ad Blocker.</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// npm i artplayer-plugin-vast</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// import artplayerPluginVast from 'artplayer-plugin-vast';</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> art </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Artplayer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> container: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'.artplayer-app'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/assets/sample/video.mp4'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> fullscreen: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> fullscreenWeb: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> plugins: [</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> artplayerPluginVast</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(({ </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">playUrl</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">imaPlayer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">ima</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // Play the ad when the video is played</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> art.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">once</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'play'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> playUrl</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'https://artplayer.org/assets/vast/linear-ad.xml'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> })</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }),</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br></div></div><h2 id="初始化兼容模式" tabindex="-1">初始化兼容模式 <a class="header-anchor" href="#初始化兼容模式" aria-label="Permalink to "初始化兼容模式""></a></h2><p>工厂形状为 <code>artplayerPluginVast(callback?, options?)</code>,返回异步注册函数。加载 SDK、创建相应上下文并 await 用户回调后,注册才完成。回调可返回 Promise,但注册完成不等于广告已请求或播放。</p><table tabindex="0"><thead><tr><th>行为</th><th>默认 npm 模式</th><th><code>{ compatibility: 'workspace-1.2' }</code></th></tr></thead><tbody><tr><td>回调开始时</td><td>已创建 IMA player 和容器</td><td>尚未创建,等 init/playUrl/playRes</td></tr><tr><td>IMA 设置</td><td>保留 SDK 自身默认值</td><td>预加载和广告结束后恢复自定义播放状态默认为 true</td></tr><tr><td>资源字段</td><td>imaPlayer/id/$container 是可写数据字段</td><td>三者是实时只读 getter,初始化前或释放后为 null</td></tr><tr><td>请求</td><td>包装层转发每次显式请求</td><td>活动广告期间抑制新的请求</td></tr><tr><td>容器</td><td>由 SDK 管理广告显隐,保留默认样式</td><td>黑色覆盖层,四个广告事件控制显隐和活动状态</td></tr></tbody></table><p>这是已批准的兼容选择:已发布 npm 1.0.0 用户保留默认行为,依赖未发布工作区 1.2 惰性初始化的代码必须显式选择工作区模式。模式在工厂调用时读取一次;未知值立即抛出 TypeError,不会启动 SDK 加载。</p><h2 id="回调上下文" tabindex="-1">回调上下文 <a class="header-anchor" href="#回调上下文" aria-label="Permalink to "回调上下文""></a></h2><table tabindex="0"><thead><tr><th>字段</th><th>实际用途</th></tr></thead><tbody><tr><td><code>art</code></td><td>当前播放器实例</td></tr><tr><td><code>ima</code></td><td>已加载的 IMA SDK</td></tr><tr><td><code>adsRenderingSettings</code></td><td>传给新 SDK player 的 IMA AdsRenderingSettings 对象</td></tr><tr><td><code>playerOptions</code></td><td>传给新 SDK player 的 Glomex PlayerOptions 对象</td></tr><tr><td><code>imaPlayer</code></td><td>SDK player,默认模式已创建;工作区模式可为 null</td></tr><tr><td><code>id</code> / <code>$container</code></td><td>该模式的容器 ID/元素,空值和快照规则见上表</td></tr><tr><td><code>container</code></td><td>两种模式均为当前容器的只读 getter;未创建或释放后为 null</td></tr><tr><td><code>init()</code></td><td>取得或创建当前 SDK player,终止后返回 null</td></tr><tr><td><code>playUrl(url, config?)</code></td><td>创建 AdsRequest,设置 adTagUrl 并请求广告;同步返回 void</td></tr><tr><td><code>playRes(response, config?)</code></td><td>创建 AdsRequest,设置 adsResponse 并请求广告;同步返回 void</td></tr></tbody></table><p>config 是附加请求字段;沿用历史 for-in 复制行为,包括可枚举的继承字段,且复制发生在主字段之后,因此可以覆盖 adTagUrl/adsResponse。请传入应用明确控制的配置。请求构造或 SDK 同步错误可直接抛出,void 返回不表示广告成功,也不是播放完成 Promise。</p><p>要在 SDK player 创建前配置选项,使用工作区模式并先修改原 settings/options 对象,再调用 init 或请求方法。默认模式的首个 player 在回调之前已经创建;不要假设回调内修改选项能追溯改变构造行为。</p><p>默认模式释放后,imaPlayer/id/$container 仍保留上次分配的快照,但 SDK 已销毁、容器已移除;不能继续把快照当作活跃资源。显式重建会更新它们。写入这些字段不会转移插件内部资源所有权。工作区模式应保留 context 并实时读取 getter,避免解构保存初始化前的 null。</p><h2 id="广告事件与销毁" tabindex="-1">广告事件与销毁 <a class="header-anchor" href="#广告事件与销毁" aria-label="Permalink to "广告事件与销毁""></a></h2><p>SDK 事件通过 imaPlayer 订阅,不是同名的 ArtPlayer 事件。工作区包装层监听 <code>AdContentPauseRequested</code>、<code>AdContentResumeRequested</code>、<code>AdStarted</code>、<code>AdError</code>,改变覆盖层和活动状态;AdError 同时记录错误。默认模式不增加这些工作区监听器。正文暂停/恢复由 SDK 负责,包装层不重复实现。</p><p>结果名为 <code>artplayerPluginVast</code>,通过 <code>art.plugins.artplayerPluginVast</code> 取得,公开 <code>destroy()</code> 同步释放当前会话。播放器仍存活时,可再次调用回调中保留的 init/playUrl/playRes 创建新会话。重建后的 SDK 是新对象,需要重新安装应用自己的 SDK 监听器。</p><p>核心销毁使这次插件安装永久终止:SDK 加载的迟到完成不再调用回调或创建容器,init 返回 null,请求方法为空操作。它不会取消其他实例共用的 SDK 脚本加载。SDK 加载或用户回调失败会清理附件并保留原拒绝值;清理失败可能可观察,但其余资源仍会尝试释放。不要将插件 destroy 与核心 destroy 的终止语义混同。</p><p>真实广告播放还涉及可用广告响应、IMA、浏览器策略和设备。SDK 加载受阻时不能把 mock、页面导航或正文继续播放当作广告播放通过;使用目标网络和设备单独验收。</p><h2 id="typescript-入口" tabindex="-1">TypeScript 入口 <a class="header-anchor" href="#typescript-入口" aria-label="Permalink to "TypeScript 入口""></a></h2><p>根入口和 <code>/legacy</code> 保留 npm 1.0.0 的必填回调、any SDK 字段和错误的同步 name-only 返回声明,不要求旧替换函数增加 <code>.default</code>。实际注册一直是异步的。需要准确类型、可省略回调、第二参数或 destroy 时使用同一实现的 <code>/runtime</code>:</p><div class="language-ts vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> vast </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'artplayer-plugin-vast/runtime'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> type</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { RuntimeResult } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'artplayer-plugin-vast/runtime'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> installPublished</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> vast</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(({ </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">imaPlayer</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> imaPlayer.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">addEventListener</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'AdStarted'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Ad started'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> installWorkspace</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> vast</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">((</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">context</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.playerOptions.autoResize </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">init</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()?.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">addEventListener</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'AdStarted'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Ad started'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">));</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}, { compatibility: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'workspace-1.2'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> });</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> releaseAd</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">result</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> RuntimeResult</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> result.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">destroy</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">();</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br></div></div><p>runtime 导出 RequestConfig、CompatibilityOptions、Context、PublishedContext、WorkspaceContext、RuntimeContext、RuntimeCallback、RuntimeResult、Registration、RuntimeFactory,及旧工作区别名 ArtplayerPluginVastOption/ArtplayerPluginVastInstance。前者是工作区回调类型,后者是 await 后的结果类型。CommonJS 无 interop 时可用 runtime 的 <code>import = require</code>,支持函数和 <code>.default</code>;这些类型不会更改旧根声明。</p>`,19)]))}const y=i(l,[["render",p]]);export{o as __pageData,y as default};
|