在加载loadPlayer之后,我有一个从外部源加载的脚本,如下所示
function loadElement() {
new YT.Player('youtube', {})
}同时,我也在我的TS文件中使用
function loadPlayer() {
new window.YT.Player('youtube id', { ...somesettings })
}但是,首先执行函数loadPlayer,然后loadElement创建新的YT对象,我不想这样做。有什么办法可以防止这种情况发生吗?我尝试在loadPlayer中添加对象冻结,或者使用代理,但它似乎不起作用。另外,我不可能删除外部脚本。我得想办法解决问题。
发布于 2022-11-18 11:29:36
给你几个选择:
window.YT.Player,因此只有您可以使用它.覆盖window.YT.Player,以便只有您可以使用它
假设它不是不可配置的绑定,则可以从YT.Player中重写loadPlayer属性。
let OriginalYTPlayer;
function loadPlayer() {
new window.YT.Player('youtube id', { ...somesettings })
OriginalYTPlayer = window.YT.Player;
window.YT.Player = function() { };
}对YT.Player的任何调用都不会做任何事情。如果您需要使用它,则可以使用OriginalYTPlayer。当然,这可能会使其他你没有提到的事情变得一团糟。
防止其他脚本加载
假设另一个脚本是脚本而不是模块,并且在加载脚本后它是加载的,则可以通过使用let或const自己定义loadElement来炸掉它并防止加载
function loadPlayer() {
// ...
}
const loadElement = null;然后,当加载另一个脚本时,它会出现一个错误,根本不执行:
<script>
const loadElement = null;
</script>
<script>
function loadElement() {
new YT.Player('youtube', {})
}
</script>
https://stackoverflow.com/questions/74488887
复制相似问题