我正试图在Facebook Canvas App上跟踪一些自定义行为。我需要将自定义变量发送到Google Analytics,但fb:google-analytics标记太有限了。
你知道解决这个问题的方法吗?
我正在跟踪正常的页面视图,但我还需要跟踪Ajax调用和自定义变量。
谢谢, 迪奥戈
答案 0 :(得分:1)
好的,根据Denis的建议,但考虑到我们无法完全切换我们的App作为iFrame运行的事实,我们使用页面开头的“隐形”iFrame修复了问题。
代码与此非常相似:
<?php
$variable = $_GET[ 'var' ];
$value = $_GET[ 'value' ];
$slot = array_key_exists( 'slot', $_GET ) ? $_GET[ 'slot' ] : 1;
$level = array_key_exists( 'level', $_GET ) ? $_GET[ 'level' ] : 3;
if ( empty( $variable ) || empty( $value ) )
{
$variable = 'BadRequest';
$value = '1';
$slot = 1;
$level = 3;
}
assert( 'is_string( $variable )' );
assert( 'is_numeric( $slot )' );
assert( 'is_numeric( $level )' );
$customParamStr = "'$slot', '$variable', '$value', '$level'";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Analytics Frame</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
_gaq.push(['_setCustomVar', <?php echo $customParamStr ?>]);
_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);
})();
</script>
</head>
<body>
</body>
</html>
要使用它,我们使用以下命令将此iFrame添加到画布页面:
<iframe class="analyticsFrame" id="analyticsCode"
src="???/analyticsFrame.php?var=varname&value=valuename&slot=1&level=3" ?>" width="0px" height="0px" />
我们仍然需要改进代码,例如,我们可以在同一个iFrame中添加对多个变量的支持......
我希望这有助于某人,我希望我们能够很快完全切换到iFrame:)
P.S。您可以使用此技术运行几乎任何JavaScript,但请记住,如果您需要它很多,您应该立即将切换完全投影到iFrame:)
再次感谢您的帮助:)
干杯, 迪奥戈