如何使用jQuery点击function在iFrame中跟踪Google Analytics
我有一个iframe(相同的域),并希望能够从父页面跟踪iframe内的按钮用法。
我不希望将跟踪直接嵌入iframe的原因是我在不同的页面上共享iFrame,并希望能够通过jQuery中的父页面跟踪事件来跟踪它的独特用法。
iFrame中的示例HTML:
button 1 button 2 button 3 button 4
父页面中的jQuery:
$(document).ready(function() { $('.btn1').click(function () { _gaq.push(['_trackEvent', 'iframe page', 'iframe buttons', button 1]); }); $('.btn2').click(function () { _gaq.push(['_trackEvent', 'iframe page', 'iframe buttons', button 2]); }); $('.btn3').click(function () { _gaq.push(['_trackEvent', 'iframe page', 'iframe buttons', button 3]); }); $('.btn4').click(function () { _gaq.push(['_trackEvent', 'iframe page', 'iframe buttons', button 4]); }); });
这不行。 如果我查看父页面源代码,那么只有iFrame引用,没有HTML – 所以我假设父页面没有看到任何附加click事件的iFrames div类?
我对jQuery很新…如果我错过了一些有些明显错误的错误,那么道歉!
编辑1:
我现在尝试修改父页面上的脚本:
$(document).ready(function() { $('.iframe').contents().find('.btn1').click(function () { alert("Button 1 Pressed!"); }); $('.iframe').contents().find('.btn2').click(function () { alert("Button 2 Pressed!"); }); $('.iframe').contents().find('.btn3').click(function () { alert("Button 3 Pressed!"); }); $('.iframe').contents().find('.btn4').click(function () { alert("Button 4 Pressed!"); }); });
并为iframe分配了class =“iframe”。
当我从父页面点击iframe内的按钮时 – 没有触发警报。
对于任何偶然发现这个线程并且正在寻找类似答案的人 – 在其他stackoverflowpost(以及来自deantoni的一些更正代码)和一些冗长的谷歌线程的帮助下,这就是我得到的解决方案。
假设是:
- iFrame是可编辑的。
- 属于同一个域名。
- 您在父框架中拥有Google Analytics跟踪代码,并提供事件跟踪支持。
使用的iFrame HTML:
button 1
使用的iFrame jQuery:
$(document).ready(function() { $('.button1').click(function() { window.parent.triggerButton1(); }); });
使用的父框架jQuery:
window.triggerButton1 = function (){ _gaq.push(['_trackEvent', 'iframe page', 'iframe buttons', 'button 1']); }
如果您正在使用具有相同域/协议和端口的iFrame,则可以使用jQuery方法contents()
,此方法可以访问iFrame的DOM,并且从那里您可以对其执行任何操作。
一个例子是:
$("#iFrame").contents().find(".btn1").click(function () { _gaq.push(['_trackEvent', 'iframe page', 'iframe buttons', button 3]); }
您可以在此处找到有关.contents()
方法的更多信息