我正在尝试在页脚加载一个 JavaScript 表单。
我在头部有如下代码:
<script type="text/discourse-plugin" version="0.8">
let loadScript = require("discourse/lib/load-script").default;
api.onPageChange(() => {
loadScript("//js.hsforms.net/forms/current.js").then(() => {
console.log("doing the thing");
hbspt.forms.create({
portalId: "229276",
formId: "a86ca9cc",
submitButtonClass: "button orange-button hubspot-button",
target: ".subscription-form"
});
});
});
</script>
而在页脚中则有:
<div class="subscription-form clearfix">
<h5>订阅我们的博客</h5>
</div>
页面首次加载时一切正常。但在后续页面(至少大多数情况下),表单无法加载,并报错:
Couldn't find target container .subscription-form for HubSpot Form a86ca9cc. Not rendering form onto the page
我怀疑可能是页脚在脚本执行之后才加载?
因此,我需要以某种方式延迟脚本的执行,直到页脚加载完成。
plugin-api.js 中提到:
// 监听来自 Discourse 的触发的 `AppEvent`。
api.onAppEvent("inserted-custom-html", () => {
console.log("a custom footer was rendered");
});
也许我只需要知道应该监听哪个 AppEvent?