我有一个点击事件,它根据下拉选择将用户带到一个 URL。但是,在我重定向用户之前,我想调用一个标记脚本来捕获用户所做的选择。这是一个第三方脚本,所以我认为我遇到了一些时间问题。
这是我的代码:
$('#submitCity').click(function(){
//trigger tags
var countrySelected = $country.val();
var citySelected = $city.val();
s.linkTrackVars='prop3,prop4,eVar3,eVar4,eVar6';
s.prop3 = 'Visitor Action';
s.prop4 = 'Home City Selected - ' + countrySelected + ', ' + citySelected;
s.eVar3 = 'Visitor Action';
s.eVar4 = 'Home City Selected - ' + countrySelected + ', ' + citySelected;
s.tl(this,'o','Home City Selected - ' + countrySelected + ', ' + citySelected);
//Link to appropriate city
setTimeout(function() {
location.href = "http://www.someURL.com/" + citySelected;
}, 1000);
});
大约一半的时间一切都按预期工作。捕获标签并成功重定向用户。但是,在另一半时间,click 事件会抛出错误,因为对象“s”未定义。我假设这是由于 location.href 在定义“s”对象之前触发的时间问题。
我的问题是,我是否要创建一个回调,以便在设置标签之前不会出现 location.href?我不喜欢使用 setTimeout,因为时间对我来说是任意的。我宁愿确保重定向总是等到标签被触发。
我想将回调函数传递给点击事件吗?还是我完全走错了路?对此问题的任何解决方案表示赞赏。谢谢!