Javascript 延迟启动';onload';事件

Javascript 延迟启动';onload';事件,javascript,html,Javascript,Html,我有一个API,我的许多客户都使用它,使用我自己的规范和说明从他们自己的站点进行操作。这意味着,不幸的是,对我来说,改变他们这边的HTML代码不是一个选项。这是他们的代码外观的一般想法,我需要在做了我想要的更改后使其仍然工作: <script src="player.js"></script> <script> console.log(player.someProperty); </script> console.log(player.

我有一个API,我的许多客户都使用它,使用我自己的规范和说明从他们自己的站点进行操作。这意味着,不幸的是,对我来说,改变他们这边的HTML代码不是一个选项。这是他们的代码外观的一般想法,我需要在做了我想要的更改后使其仍然工作:

<script src="player.js"></script>
<script>
    console.log(player.someProperty);
</script>

console.log(player.someProperty);
我想做以下更改:

  • 将player.js重命名为player_2.0.js
  • 创建一个名为player.js的小脚本,以便顶部的HTML5可以像以前一样工作。然后player.js将动态加载player_2.0.js
问题是代码的以下部分何时执行

<script>
    console.log(player.someProperty);
</script>

console.log(player.someProperty);
player_2.0.js仍然没有完成加载,导致player.someProperty未定义

所以我的问题是,我是否可以操纵或推迟player.js脚本的“onload”事件,直到加载player_2.0.js完成,或者做任何可以让我完成的事情。

您异步加载player_2.0.js,因此下面的代码无法访问
player.someProperty

有一种古老而丑陋的同步加载技术,它使用

简言之:

<script type="text/javascript">
  document.write('<script type="text/javascript" src="other.js"></script>');
</script>

<script type="text/javascript">
  functionFromOther();
</script>

文件。写(“”);
函数fromOther();
有关更多详细信息,请参阅

这是一件非常糟糕的事情,因为您将阻止加载其他资源,并且在没有iframe的情况下无法动态注入此脚本


我更愿意使用名为的技术,但这需要在公共API中进行一些更改。

如果player.js动态加载player_2.0.js,那么您也需要加载使用player.js动态加载的player.someProperty的脚本。这在
onload
后不会触发。当浏览器解析
脚本
标记时,它会被触发。@你可以,但那不在脚本控制之下。你有
.htaccess
控制吗?如果是
重定向301 player.js player2.0.js
此代码可能会成功!然后,您必须定期检查播放器对象是否可用,比如每50毫秒检查一次。如果player.js不在您的控制之下,我认为没有办法做到这一点。大多数时候这可能很糟糕,但在我的情况下,这正是我所需要的。谢谢