ドロップダウンの選択に基づいてユーザーを 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);
});
約半分の時間で、すべてが期待どおりに機能します。タグがキャプチャされ、ユーザーが正常にリダイレクトされます。ただし、残りの半分の時間では、オブジェクト「s」が定義されていないため、クリック イベントがエラーをスローします。これは、「s」オブジェクトが定義される前に location.href が起動するというタイミングの問題によるものだと思います。
私の質問は、タグが設定されるまで location.href が発生しないようにコールバックを作成しますか? タイミングが恣意的に感じられるので、 setTimeout を使用するのは好きではありません。タグが起動されるまでリダイレクトが常に待機するようにしたいと思います。
クリック イベントにコールバック関数を渡しますか? それとも、私は完全に間違った方向に進んでいますか? この問題の解決策は大歓迎です。ありがとう!