푸터에 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>Sign Up for Our Blog</h5>
</div>
페이지가 처음 로드될 때는 잘 작동합니다. 하지만 이후 페이지(대부분의 페이지)에서는 폼이 로드되지 않고 다음과 같은 오류가 발생합니다:
Couldn't find target container .subscription-form for HubSpot Form a86ca9cc. Not rendering form onto the page
아마도 스크립트가 실행된 후에 푸터가 로드되는 것 같습니다.
따라서 푸터가 로드될 때까지 실행을 지연시켜야 할 것 같습니다.
plugin-api.js에는 다음과 같은 내용이 있습니다:
// Listen for a triggered `AppEvent` from Discourse.
api.onAppEvent("inserted-custom-html", () => {
console.log("a custom footer was rendered");
});
어떤 AppEvent를 찾아야 하는지 알려주시면 좋겠습니다.