我目前正在开发一个基于Ajax的移动网站项目,但我无法让Omniture正常工作。以下是该问题的简要细节。
网站的每个页面都有Omniture的代码,例如:
<html><head></head><body> <script type="text/javascript" src="//domain-and-path-to-omniture-code-files/s_code.js"> <script type="text/javascript"> s.pageName = "blah"; // some other ... s.blahBlah ... properties here... /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/ var s_code=s.t();if(s_code)document.write(s_code); </script> <div id="content">SOME CONTENT</div> </body>
用户打开浏览器并打开一个网址/页面,例如example.com/a
页面(example.com/a)有多个链接指向同一页面上的内容,如#topic1,#topic2,#topic3等,还有指向该网站其他静态页面的链接,例如example.com/b,example.com/c,example.com/d等
我使用jQuery来控制这些链接上的点击事件。
当用户点击命名链接时,如#topic1,#topic2等,页面将被动画/平滑滚动到目标元素/内容部分;触发Omniture的“s.tl()”功能,以跟踪/捕获具有相关/必需细节的点击事件。
##这就是问题区## 当用户点击指向其他静态页面的链接时,例如example.com/b,example.com/c等,而不是允许浏览器进行完整的页面加载,目标页面的Ajax版本被加载到内容持有者(通过Ajax版本,我的意思是说该页面只有极少的标记/内容和不是整个html / head / common-css / js包含/ etc)。
现在的问题是,当页面正常加载时,Omniture会将其正确捕获为“加载”事件,但是当它通过JavaScript / Ajax加载时,Omniture会将其捕获为“点击”事件!
页面的Ajax /版本,不再包括Omniture库“s_code.js”JS(原因很明显,它已存在于父/主页面上)。除了必需的内容外,此页面还只有一个脚本标记,用于为新页面设置所需的“s.blahBlah”值,并调用“s.t();”。
我还尝试将Omniture代码保存在一个已经加载了父页面的公共JS文件中,并且只在Ajax调用/函数中设置所需的“s.blahBlah”值(也在一个全局/已加载的JS文件),但Omniture仍然将其捕获为“点击”事件。
// s.tl(); ... gets captured as a click event // s.t(); ... on normal page load... gets captured as a load event // s.t(); ... after DOM-ready/page loaded via Ajax... gets captures as a click event
任何想法!如何让Omniture捕获加载事件?是否有像“s.l()”这样的函数或者按需触发Omniture的“加载”事件。
答案 0 :(得分:1)
问题不在于Omniture错误捕获它,而是我用来查看请求的工具&#34; Omnibug&#34;
Omnibug 0.5.448记录所有&#34; s.t()&#34;在页面加载事件之前进行的调用为Omniture&#34;加载&#34;事件和任何&#34; s.t()&#34;之后发出的呼叫被捕获为&#34;点击&#34;事件
显然,我不是唯一一个面临这个问题的人。其他人已经向Omnibug(https://github.com/simpsora/omnibug/issues/4)的开发人员报告了这个问题,并且他已经修复了Omnibug 0.5.500的新版本。
Omnibug 0.5.500的新版本捕获了所有&#34; s.t()&#34;呼叫为&#34;加载&#34;事件正确和所有&#34; s.tl()&#34;打电话给&#34;点击&#34;事件
谢谢!