[HubSpot]フォームが読み込まれたあとにイベント処理を行いたい(要素を取得したい)
HubSpotで作成し、ページに埋め込んだフォームに対して入力項目を取得して何か処理を行いたい場合、下記のような方法ではうまくいきません。
document.addEventListener('DOMContentLoaded', function() {
const inputTag = document.querySelector('input[name="xxx"]');
}, false);
DOMContentLoadedイベントは、Hubspotのフォームが読み込まれる前に発生してしまうため、上記サンプルコードのようにinputタグやtextareaタグなどの要素を取得しようとしても未定義となってしまいます。
このような場合は、HubSpot側で用意されているイベントを利用してフォームの読み込みが完了したタイミングを検知することができます。
window.addEventListener('message', event => {
if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormReady') {
const inputTag = document.querySelector('input[name="xxx"]');
}
}, false);
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。