【发布时间】:2016-02-19 16:16:44
【问题描述】:
我有一个 iframe(同一个域),并且希望能够从父页面跟踪 iframe 内的按钮使用情况。
我不想将跟踪直接嵌入 iframe 的原因是我在不同页面之间共享 iFrame,并且希望能够通过 jQuery 中的父页面跟踪事件来跟踪它的独特使用情况。
iFrame 内的 HTML 示例:
<a class="btn1" href="1.html">button 1</a>
<a class="btn2" href="2.html">button 2</a>
<a class="btn3" href="3.html">button 3</a>
<a class="btn4" href="4.html">button 4</a>
父页面内的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 - 所以我假设父页面没有看到任何 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 内的按钮时 - 不会触发任何警报。
【问题讨论】:
-
阅读更通用的 iframe > jquery 帖子...我将尝试向 iframe 添加唯一 ID '1',并将其定位为:$('#1')。 contents().find('.btn1').click(function () {_gaq.push(['_trackEvent', 'iframe page', 'iframe buttons', button 1]);});
-
子域、域、协议和端口是否完全相同相同,而不仅仅是相似?他们需要;否则同源政策生效。
-
它们是相同的yahelc,从同一个域调用,在同一个文件夹中。