Если бы мне действительно нужно было достичь чего-то подобного, я бы немного обманул пользователя.
Вместо того, чтобы пытаться получить клик на iframe, создайте оверлей div и поместите его выше iframe. Присоедините к нему событие click, а когда щелкает div, скрывайте его.
Это даст пользователю ощущение, что он нажал на ссылку, но это не сработало правильно. Во второй раз, когда он щелкнет, оно уже сработало, потому что оверлей скрыт.
Пример кода (только для пояснения):
<html>
<style>
.test {
position : absolute;
top : 0;
left : 0;
width : 300;
height : 300;
z-index : 999;
filter : alpha(opacity = 0);
opacity : 0;
background-color:black;
}
</style>
<script>
function start(){
var div = document.getElementById("target");
var source = document.createElement("div");
source.className = "test";
document.body.appendChild(source);
var style = source.style;
var div2 = document.createElement("div");
document.body.appendChild(div2);
source.onclick = function(e){
style.display = "none";
div.onmouseout = function(){
div2.innerHTML = "mouseout";
style.display = "";
div.onmouseout = null;
}
div2.innerHTML = "clicked";
}
}
</script>
<body onload="start()">
<div id="target">
<iframe src="http://mail.ru" style="width:300;height:300"></iframe>
</div>
</div>
</html>