Jquery mobile 谷歌分析公司;jquerymobile&;jQuery 1.9
之前有一个问题是关于将Google Analytics与jquery Mobile结合使用,并提供了一个成功的答案。然而,这适用于1.9之前的jQuery版本 请有人帮助修改代码,以便将折旧后的.live事件替换为当前的.on事件。我试过了,但没有成功 以下是JavaScript代码:Jquery mobile 谷歌分析公司;jquerymobile&;jQuery 1.9,jquery-mobile,google-analytics,Jquery Mobile,Google Analytics,之前有一个问题是关于将Google Analytics与jquery Mobile结合使用,并提供了一个成功的答案。然而,这适用于1.9之前的jQuery版本 请有人帮助修改代码,以便将折旧后的.live事件替换为当前的.on事件。我试过了,但没有成功 以下是JavaScript代码: var _gaq = _gaq || []; $(document).ready(function(e) { (function() { var ga = document.createEl
var _gaq = _gaq || [];
$(document).ready(function(e) {
(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);
})();
});
$('[data-role=page]').live('pageshow', function (event, ui) {
try {
_gaq.push(['_setAccount', 'YOUR_ANALYTICS_ID_GOES_HERE']);
if ($.mobile.activePage.attr("data-url")) {
_gaq.push(['_trackPageview', $.mobile.activePage.attr("data-url")]);
} else {
_gaq.push(['_trackPageview']);
}
} catch(err) {}
});
在将.live()更改为.on()之后,我还必须将脚本从
移动到
的末尾,就在附加到
的最后一个
之前。否则我将无法获得所有页面视图 在将.live()更改为.on()之后,我还必须将脚本从
移动到
的末尾,就在附加到
的最后一个
之前。否则我将无法获得所有页面视图 谷歌在跟踪信息页面上给出的代码,根据您选择的功能,您会看到类似的内容:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
_gaq.push(['_setDomainName', 'foo.bar']);
_gaq.push(['_trackPageview']);
(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);
})();
你被告知要把它放在开场白之后。您应该通过删除\u trackPageview
行并在代码块末尾添加一个简单的代码片段,使其与jQuery Mobile(在v1.3上测试)保持在同一位置,给出:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
_gaq.push(['_setDomainName', 'foo.bar']);
(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);
})();
$(document).on('pageshow', ':jqmData(role="page")', function(evt, data) {
var url = $(this).jqmData('absUrl');
try {
if (url) {
url = $.mobile.path.parseUrl(url)
_gaq.push(['_trackPageview', url.pathname + url.search + url.hash]);
}
else {
_gaq.push(['_trackPageview']);
}
}
catch(e) {}
});
谷歌在“追踪信息”页面上给出的代码,根据您选择的功能,您会看到类似的内容:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
_gaq.push(['_setDomainName', 'foo.bar']);
_gaq.push(['_trackPageview']);
(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);
})();
你被告知要把它放在开场白之后。您应该通过删除\u trackPageview
行并在代码块末尾添加一个简单的代码片段,使其与jQuery Mobile(在v1.3上测试)保持在同一位置,给出:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
_gaq.push(['_setDomainName', 'foo.bar']);
(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);
})();
$(document).on('pageshow', ':jqmData(role="page")', function(evt, data) {
var url = $(this).jqmData('absUrl');
try {
if (url) {
url = $.mobile.path.parseUrl(url)
_gaq.push(['_trackPageview', url.pathname + url.search + url.hash]);
}
else {
_gaq.push(['_trackPageview']);
}
}
catch(e) {}
});
除了.live被.on取代外,Google还将用analytics.js取代ga.js,作为对Universal analytics的更改的一部分 我使用了Walf发布代码的一个变体来跟踪基于jQuery Mobile的网站上的各个页面,但需要对其进行更改以使用新的Universal Analytics配置。我在body标记后面有以下脚本:
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXXX-X', 'site_name.com');
ga('send', 'pageview');
$(function () {
$('[data-role=page]').on('pageshow', function (event, ui) {
try {
if (location.hash) {
ga('send', 'pageview', location.hash);
}
else {
ga('send', 'pageview');
}
}
catch (error) {
}
});
});
<script>
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments);
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXX-XX', 'exemple.com');
</script>
Google Analytics中按位置散列(例如#about)列出的页面为我提供了我想要了解的关于访问者如何与网站互动的信息 除了.live被.on取代之外,谷歌还将用analytics.js取代ga.js,作为通用分析的一部分 我使用了Walf发布代码的一个变体来跟踪基于jQuery Mobile的网站上的各个页面,但需要对其进行更改以使用新的Universal Analytics配置。我在body标记后面有以下脚本:
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXXX-X', 'site_name.com');
ga('send', 'pageview');
$(function () {
$('[data-role=page]').on('pageshow', function (event, ui) {
try {
if (location.hash) {
ga('send', 'pageview', location.hash);
}
else {
ga('send', 'pageview');
}
}
catch (error) {
}
});
});
<script>
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments);
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXX-XX', 'exemple.com');
</script>
Google Analytics中按位置散列(例如#about)列出的页面为我提供了我想要了解的关于访问者如何与网站互动的信息 在打开主体标记之后:
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXXX-X', 'site_name.com');
ga('send', 'pageview');
$(function () {
$('[data-role=page]').on('pageshow', function (event, ui) {
try {
if (location.hash) {
ga('send', 'pageview', location.hash);
}
else {
ga('send', 'pageview');
}
}
catch (error) {
}
});
});
<script>
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments);
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXX-XX', 'exemple.com');
</script>
(功能(i、s、o、g、r、a、m){
i['GoogleAnalyticsObject']=r;
i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数);
},i[r].l=1*新日期();
a=s.createElement(o),
m=s.getElementsByTagName(o)[0];
a、 异步=1;
a、 src=g;
m、 parentNode.insertBefore(a,m);
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
ga(“创建”、“UA-XXXXXXX-XX”、“example.com”);
在每一页中:
<div data-role="page" ...>
...
<script>
$(document).off("pageshow", 'div[data-role="page"]').on("pageshow", 'div[data-role="page"]', function() {
ga('send', 'pageview', $.mobile.path.getLocation());
});
</script>
</div>
...
$(document).off(“pageshow”、“div[data role=“page”]”)on(“pageshow”、“div[data role=“page”]”函数(){
ga('send','pageview',$.mobile.path.getLocation());
});
在打开主体标签后:
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXXX-X', 'site_name.com');
ga('send', 'pageview');
$(function () {
$('[data-role=page]').on('pageshow', function (event, ui) {
try {
if (location.hash) {
ga('send', 'pageview', location.hash);
}
else {
ga('send', 'pageview');
}
}
catch (error) {
}
});
});
<script>
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments);
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXX-XX', 'exemple.com');
</script>
(功能(i、s、o、g、r、a、m){
i['GoogleAnalyticsObject']=r;
i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数);
},i[r].l=1*新日期();
a=s.createElement(o),
m=s.getElementsByTagName(o)[0];
a、 异步=1;
a、 src=g;
m、 parentNode.insertBefore(a,m);
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
ga(“创建”、“UA-XXXXXXX-XX”、“example.com”);
在每一页中:
<div data-role="page" ...>
...
<script>
$(document).off("pageshow", 'div[data-role="page"]').on("pageshow", 'div[data-role="page"]', function() {
ga('send', 'pageview', $.mobile.path.getLocation());
});
</script>
</div>
...
$(document).off(“pageshow”、“div[data role=“page”]”)on(“pageshow”、“div[data role=“page”]”函数(){
ga('send','pageview',$.mobile.path.getLocation());
});
只需使用on更改live,最终结果相同。或者您仍然可以使用旧方法绑定,与live不同,它仍然有效。@Gajotreson
不能直接替代live
。对于委派事件,调用语法是不同的。根据我的经验和官方文档,我从未说过on是直接的替代品,on目前用于页面事件绑定。更不用说这是一条正式的jQueryLive方法语句:从jQuery1.7开始,.live()方法已被弃用。使用.on()附加事件处理程序。较旧版本的jQuery用户应该优先使用.delegate(),而不是.live()。只需将live改为on,最终结果相同。或者您仍然可以使用旧方法绑定,与live不同,它仍然有效。@Gajotreson
不能直接替代live
。对于委派事件,调用语法是不同的。根据我的经验和官方文档,我从未说过on是直接的替代品,on目前用于页面事件绑定。更不用说这是一条正式的jQueryLive方法语句:从jQuery1.7开始,.live()方法已被弃用。使用.on()附加事件处理程序。较旧版本的jQuery用户应优先使用.delegate(),而不是.live()。它仍然无法正确附加到委派事件。它仍然无法正确附加到委派事件。这将仅适用于DOM中已存在的页面,而不是动态加载的页面,因为您没有使用委派事件。这将只在DOM中已经存在的页面上工作,而不会在动态加载的页面上工作,因为您