我正在使用Javascript代码将其注入Squarespace网站,但是当我这样做时,出现错误“未定义的referenceerror y未定义”。我正在尝试使用Squarespace的表格写给salesforce,但我不知道是否在Squarespace 7.1上保留了YUI。
<script type="text/javascript">Y.namespace('Template').Salesforce = Class.create({
initialize: function (config) {
this.config = config;
},
submit: function () {
var formData = this.getFormData(this.config.sqsFormSubmit);
var phoneNumber = '';
if (formData['phone'] && formData['phone'].length >= 4) {
phoneNumber = formData['phone'].join('-');
}
var description = '';
for (key in formData) {
var value = formData[key];
if (Array.isArray(value)) {
value = value.join(' ');
}
description += key + ': ' + value + '\n';
}
var params = {
first_name: formData['name'][0],
last_name: formData['name'][1],
email: formData['email_address'],
phone: phoneNumber,
company: formData['company'],
lead_source: formData['sqf_lead_source'] || 'web',
description: description,
oid: this.config.oid
};
});</script>
您可以通过这种方式访问'Y'。但是,您的代码可能在“ Y”可用之前运行。将代码包装在窗口“加载”事件监听器中,如下所示:
<script>
window.addEventListener("load", function() {
console.log(Y); // Your code here.
});
</script>
如果在定位表单时还有其他问题,可能必须使用setTimeout
或MutationObserver
,以确保可以使用必要的元素。