我正试图找出一种用jquery跟踪iframe内部点击的方法。 iframe位于同一个域中,但我似乎无法使其工作,这是我的代码:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
var clicks = 0;
$('#myframe').load(function() {
alert('loaded');
var that = $(this);
that.contents().find('a').bind('click', function(e) {
e.preventDefault();
clicks++;
$('#clicks').html(clicks);
});
});
</script>
</head>
<body>
Clicks: <span id="clicks" >0</span>
<iframe id="myframe" src="test_iframe.php" width="500" height="500"></iframe>
</body>
</html>
任何可能出错的想法?
我在SO看到了与此问题非常相似的其他问题,但没有一个问题解决了我的问题。
更新
我已使用@Wes代码在http://www.politicos.biz/stack/iframe_click.php更新了我的代码,它适用于jsfiddle但不适用于我的网站。
答案 0 :(得分:0)
在添加活动之前,请确保iframe已完全加载。
我希望处理程序可以添加.document
$('body', window.parent.frames[0].document).click(
function(){}
);
OR
$('body', $('templateframe')[0].document).click(
function(){}
);
答案 1 :(得分:0)
以下是一个例子:
http://jsfiddle.net/wesbos/VxA8t/1/
$(function() {
var clicks = 0;
$('#myframe').contents().find('a').bind('click', function(e) {
e.preventDefault();
clicks++;
$('#clicks').html(clicks);
});
});
您需要先找到链接,然后绑定到它。
您的代码应该是这样的:
$('body', $('templateframe')).contents().find('a').click(function(event) {
alert("Link Clicked");
});
答案 2 :(得分:0)
,创建一个从iframe内部调用的函数。
父:
var click = 0;
function addClick()
{
click++;
}
然后,从iframe调用它
parent.addClick();
最后,简单地参考click
了解点击次数。希望这会有所帮助。