gpt4 book ai didi

javascript - 扩展 Audio/HTMLMediaElement javascript 对象

转载 作者:行者123 更新时间:2023-12-04 23:52:14 26 4
gpt4 key购买 nike

我需要扩展 Audio 对象以提供停止功能。通常这段代码可以工作:

Audio.prototype.stop = function() {
this.pause();
this.currentTime = 0;
}

但是,我需要在 Chrome 扩展的内容脚本中发生这种情况,并且由于上下文是分开的,因此更改不会传播到其他上下文。

我试过使用 this unsafeWindow hack尝试突破隔离环境,但没有成功,并尝试使用 Object.create 并设置 constructor 属性。

最佳答案

内容脚本有一个独立的执行环境,但它与页面共享 DOM。您可以通过添加 <script> 在页面的实际 执行环境中运行脚本。标记到 DOM:

var s = document.createElement("script");
s.innerText = "Audio.prototype.stop = function() { this.pause(); this.currentTime = 0; }";
document.documentElement.appendChild(s);

我相信这段代码将在两种执行环境中运行脚本(或者,至少,它应该在页面的环境中运行)。

请注意,此解决方案只能在资源加载期间或之后运行脚本,不能在 DOM 完成后立即运行,因为它需要浏览器处理添加到页面的新脚本资源。对于您当前的需求,这应该不是问题。

关于javascript - 扩展 Audio/HTMLMediaElement javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11509626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com