ページの読み込み時にWoopraカスタムイベントデータを実装しようとしています。ガイドラインを使用し て、ページの準備ができた状態でイベントをプッシュしようとしましたが、woopratrackerが定義されていないことが常に表示されますが、onclickで使用しようとするとイベントは正常に動作しますが、woopraライブラリの読み込みに遅延があると思いますが、ページレディで関数を呼び出しています。つまり、呼び出しはページレディを待ってから実行する必要があります。私はタイムアウトを設定し、1秒後に同じ関数を呼び出しました。それは正常に機能しましたが、それでも論理的ではありません、何かアイデアはありますか?ありがとうございました :)
1 に答える
その通りです。ページが読み込まれる前にwoopraTrackerを呼び出しています。彼らのサイトの最新のスニペットは非同期です。つまり、このコードの直後にwoopraTrackerを呼び出すとwsc.async=true
、このスクリプトが初期化されるのを待たずに続行するようにブラウザーに指示するため、失敗する可能性があります。何を追跡したいかが事前にわかっている場合は、そのコードをwoopraReadyに入れてください。
この例では、まさにそれが行われています:http: //www.woopra.com/docs/tracking/custom-event-data/。このドキュメントはすでに見つかっているようですが、コードをグローバル変数ではなくwoopraReady
ローカル変数に配置して使用していますか?スクリプトがロードされると呼び出されるので、発生している問題に遭遇することはありません。tracker
woopraTracker
woopraReady
イベントを追跡する他のものがあるwoopraTracker.trackEvent()
場合、ユーザーが本当に速かったため、またはwoopraの読み込み中にエラーが発生したためにスクリプトが読み込まれなかった場合に備えて、ラップすることは問題ありません。
woopraTrackerを直接呼び出す代わりに、独自のラッパーを定義できます。
var pushWoopraEvent = function(e) {
// Don't screw us over if Woopra failed to load or hasn't loaded yet
if (typeof woopraTracker === 'object') {
woopraTracker.pushEvent(e);
}
};
pushWoopraEvent({name: 'Rate Song', stars: 5});