我在网页中嵌入了一个Typeform调查表,放在iframe中。我想通过JS知道用户是否已经完成了调查表(即点击了提交按钮)。但是,Typeform的JS似乎没有提供任何可以监听的事件。目前我只找到一种解决方案——定期调用以下测试来检测是否正在显示outro页面:
document.getElementById('my-typeform-iframe').getElementsByClassName('outro').length > 0
有更好的方法吗?
我在网页中嵌入了一个Typeform调查表,放在iframe中。我想通过JS知道用户是否已经完成了调查表(即点击了提交按钮)。但是,Typeform的JS似乎没有提供任何可以监听的事件。目前我只找到一种解决方案——定期调用以下测试来检测是否正在显示outro页面:
document.getElementById('my-typeform-iframe').getElementsByClassName('outro').length > 0
好的,所以我之前的假设是错误的 - 原来Typeform嵌入式框架会在用户提交表单时触发一个事件。这个事件名为form-submit
,可以通过以下方式进行处理:
window.addEventListener('message', function(event){
if(event.data == 'form-submit')
// your business logic here
}, false);
<script src="https://embed.typeform.com/embed.js"></script>
<script>
window.addEventListener("DOMContentLoaded", function() {
var el = document.getElementById("my-embedded-typeform");
window.typeformEmbed.makeWidget(el, "https://admin.typeform.com/to/cVa5IG", {
onSubmit: function() {
alert("submited!");
}
});
});
感谢Peter Answer,我查看了他们提供的事件并得到了一些好的结果。以下是我的发现:
window.addEventListener('message', function(event){
if(event.data.type == 'form-submit')
// your business logic here
}, false);
事件数据有几种类型,包括:
event.data
现在始终是相同的ID。 - Marco Anconaevent.data.type
。 - Marc