我有一个外部脚本,然后在我的<body>. 根据这个答案,看起来内联脚本在外部脚本之前运行,这是不应该发生的:
如果您没有动态加载脚本或将它们标记为延迟或异步,则脚本将按照页面中遇到的顺序加载。无论是外部脚本还是内联脚本都无关紧要 - 它们按照在页面中遇到的顺序执行。在外部脚本之后的内联脚本被保留,直到它们之前的所有外部脚本都加载并运行。
源代码:https : //stackoverflow.com/a/8996894/114855
这是我的代码:
<script src="https://checkout.stripe.com/checkout.js"></script>
<script>
var handler = StripeCheckout.configure({
key: 'pk_live_HhFqemZFyEUJVorFzYvjUK2j',
token: function(res) {
$('#pay_token').val(res.id);
$('#pay_email').val(res.email)
$('#pay_amount').val(parseFloat($("#amount").val())*100);
$('#pay_description').val($("#description").val());
$('#pay_real').submit();
}
});
/* .. */
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
控制台显示 StripeCheckout 未定义(外部脚本应定义)

这是有道理的,因为网络选项卡显示我的外部请求仍在等待中。但我不确定为什么浏览器没有等待 checkout.js 被获取:
