首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止函数再次越权

防止函数再次越权
EN

Stack Overflow用户
提问于 2022-11-18 11:19:27
回答 1查看 23关注 0票数 0

在加载loadPlayer之后,我有一个从外部源加载的脚本,如下所示

代码语言:javascript
复制
function loadElement() {
    new YT.Player('youtube', {})    
}

同时,我也在我的TS文件中使用

代码语言:javascript
复制
function loadPlayer() {
    new window.YT.Player('youtube id', { ...somesettings })
}

但是,首先执行函数loadPlayer,然后loadElement创建新的YT对象,我不想这样做。有什么办法可以防止这种情况发生吗?我尝试在loadPlayer中添加对象冻结,或者使用代理,但它似乎不起作用。另外,我不可能删除外部脚本。我得想办法解决问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-18 11:29:36

给你几个选择:

  1. 重写window.YT.Player,因此只有您可以使用它.

  1. 完全阻止了其他脚本的加载。

覆盖window.YT.Player,以便只有您可以使用它

假设它不是不可配置的绑定,则可以从YT.Player中重写loadPlayer属性。

代码语言:javascript
复制
let OriginalYTPlayer;
function loadPlayer() {
    new window.YT.Player('youtube id', { ...somesettings })
    OriginalYTPlayer = window.YT.Player;
    window.YT.Player = function() { };
}

YT.Player的任何调用都不会做任何事情。如果您需要使用它,则可以使用OriginalYTPlayer。当然,这可能会使其他你没有提到的事情变得一团糟。

防止其他脚本加载

假设另一个脚本是脚本而不是模块,并且在加载脚本后它是加载的,则可以通过使用letconst自己定义loadElement来炸掉它并防止加载

代码语言:javascript
复制
function loadPlayer() {
    // ...
}
const loadElement = null;

然后,当加载另一个脚本时,它会出现一个错误,根本不执行:

代码语言:javascript
复制
<script>
const loadElement = null;
</script>
<script>
function loadElement() {
    new YT.Player('youtube', {})    
}
</script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74488887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档