Я пытаюсь использовать jQuery Mobile + MVC 3 для запуска нового мобильного сайта.Одним из требований является установка Google Analytics и правильное отслеживание просмотров страниц.Я вставил код GA, как обычно, но, похоже, он отслеживает только домашнюю страницу и ни одну из других страниц сайта.После некоторого обзора кажется, что я должен разделить код JavaScript JavaScript GA на два отдельных блока.Итак, в элементе у меня есть это:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'xx-xxxxxx-x']);
(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>
Затем, непосредственно перед закрывающим тегом у меня есть это:
<script type="text/javascript">
$('[data-role=page]').live('pageshow', function (event, ui) {
try {
_gaq.push(['_trackPageview', '@Model.RequestPath']);
} catch (err) { }
});
</script>
Проблема: @Model.RequestPath ВСЕГДА возвращает "/".Я прошел через отладчик и увидел, что свойство заполняется соответствующим путем (например, / somedirectory / somepage "), но когда оно попадает в представление, оно просто получает" / ".
Важная информация:
Model.RequestPath настроен для возврата текущего значения Request.Url.AbsolutePath.
ИзменениеМетод действия внутренней страницы, устанавливающий для свойства RequestPath какое-либо постоянное значение, не имеет никакого эффекта, как будто он использует модель представления для заполнения страницы (страница отображается так, как ожидалось), но свойство RequestPath, похоже, модифицируется в какой-то момент.Я запутался в том, как отладчик показывает, что он заполнен правильным путем, но затем выводит "/", когда он попадает в представление.
У меня есть две страницы: index.cshtmlкоторая является домашней страницей и является первой обслуживаемой страницей. Остальные внутренние страницы используют SiteMaster.cshtml. Они имеют одинаковый код GA.
Когда я загружаю tНа этой странице отладчик выполняет действие контроллера для моего запроса (как я и ожидал), и модель заполняется правильным путем (однако представление по-прежнему выводит "/").
Когда я выполняю «Просмотр исходного кода» в FireFox, отладчик запускается снова, за исключением этого времени, когда он выполняет действие контроллера для моей домашней страницы.
Я изменил код GA на SiteMaster.cshtmlдля вызова «trackPageview1» и в index.cshtml для вызова «trackPageview2» просто так, чтобы я мог видеть при выполнении источника представления, какой из них вызывается.Это ВСЕГДА trackPageview2, что означает, что он всегда тянет из index.html, даже когда я нахожусь на странице, которая использует файл макета SiteMaster.cshtml.Это поможет объяснить, почему RequestPath всегда "/", но я до сих пор не понимаю, почему он не выводит разметку из файла основного макета.
Я уверен, что этоимеет какое-то отношение к jQuery Mobile и способу, которым он облегчает запросы страниц через AJAX, но я застрял, пытаясь понять это.Думаю, что я опубликую и посмотрю, сможет ли кто-нибудь здесь помочь, пока я продолжу свои собственные исследования.
Я уточню этот пост с более подробной информацией, если потребуется, когда я получу ответы или найду дополнительную информацию.1043 *