<script type="text/javascript">
var _gaq = _gaq || [];
(function() {
... regular stufff
})();
// bind to pageshow event
$(document).on( pageshow , div:jqmData(role="page").basePage , function (event, ui) {
try {
_gaq.push([ _setAccount , ID ;
_gaq.push([ _gat._anonymizeIp ]);
var url = location.href;
try {
if (location.hash) {
url = location.hash;
}
_gaq.push([ _trackPageview , url]);
} catch(err) {}
});
</script>
所以我在听 JQM 页面展示活动, 用于跟踪分析。 此片段被粘贴到所有页面的结尾 。
我有小分析学 要求JSS这样的:
< pronger > main.js :
require.config({
baseUrl: "../js/",
paths: {
"jquery": "libs/jquery/jquery.min",
"jqm": "libs/jquery-mobile/jquery-mobile.min",
"analytics": "https://www.google-analytics.com/ga"
}
require([ order!jquery , order!jqm , order!analytics , app ],
function(jquery, jqm, analytics, App){
App.start();
});
在“强势”App.js 强”中:
var start = function() {
require([ order!jquery , order!jqm , order!analytics ],function() {
// do stuff
});
问题是,分析片段在每页HTML标记的结尾处, 所以尽管我认为我已经正确地设置了它, 要求JS与Jquery和Jquery Mobile装载之前, 我仍然有一个错误:
$ is not defined
....ocument).on( pageshow , div:jqmData(role="page").basePage , function (event, ui...
当第一页加载时。
我猜是因为 HTML 标记在需求范围之外, 并且在 JQM 装入前被解析。 尽管如此, 仍然必须有一个合适的设置方法 。
Question:
Any idea why the error pops up and what I can do about it?
谢谢你的帮助!
EDIT:
Ok. Doing it like this works:
在我页面页眉中 我宣布第一部分:
<script type="text/javascript">
var _gaq = _gaq || [];
(function() {
var ga = document.createElement( script ); ga.type = text/javascript ; ga.async = true;
ga.src = ( https: == document.location.protocol ? https://ssl : http://www ) + .google-analytics.com/ga.js ;
var s = document.getElementsByTagName( script )[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
然后在我的要求内开始功能 我调用第二狙击手:
var start = function() {
require([ order!jquery , order!jqm ],function() {
var analyticsHasBeenSet;
...
var analyize = function () {
if ( analyticsHasBeenSet != true ){
analyticsHasBeenSet = true;
require([ https://www.google-analytics.com/ga.js ], function (App) {
$(document).on( pageshow , div:jqmData(role="page"), function() {
_gaq.push([ _setAccount , ]);
_gaq.push([ _gat._anonymizeIp ]);
var url = location.href;
try {
if (location.hash) {
url = location.hash;
}
_gaq.push([ _trackPageview , url]);
} catch(err) { // error catch }
});
});
}
}
analyize();
这样一来, 第二片段只有在 Jquery 和 Jquery Mobile 被装入后才能执行。 通过设置一个全球变量( 我希望), 约束将只启动一次 。 目前看来有效 。