我有许多客户使用的API,使用我自己的规范和说明从他们自己的网站操作它。这意味着,对我来说,更改HTML代码并不是一种选择。这是他们的代码看起来如何的一般概念,我需要在我做我想要的更改后仍然可以使用它:
<script src="player.js"></script>
<script>
console.log(player.someProperty);
</script>
我想做以下更改:
问题是当代码的以下部分被执行时
<script>
console.log(player.someProperty);
</script>
player_2.0.js仍然没有加载,导致player.someProperty未定义。
所以我的问题是,如果我可以操作或推迟播放player.js脚本的'onload'事件,直到它完成加载player_2.0.js,或做任何可以让我完成的事情。
答案 0 :(得分:2)
您正在异步加载 player_2.0.js ,因此以下代码无法访问player.someProperty
。
有一种古老而丑陋的同步加载技术,它使用Document.write()
简而言之:
<script type="text/javascript">
document.write('<script type="text/javascript" src="other.js"></script>');
</script>
<script type="text/javascript">
functionFromOther();
</script>
有关详细信息,请参阅document.createElement(“script”) synchronously。
这是一件非常糟糕的事情,因为您将阻止加载其他资源,并且您无法在没有iframe的情况下动态注入此脚本。
我宁愿使用名为Friendly Iframes的技术,但这需要对您的公共API进行一些更改。