Перехват кликов по ссылке из фрейма

У меня есть старая модная страница, в которой используется набор фреймов, содержащий верхний и нижний кадры. Набор фреймов определен в "index.html", и мой код выглядит следующим образом:

<html>
<head>

<script src="jquery-1.4.2.min.js" type="text/javascript"></script>

<script>

    $(document).ready(function(){

        $('#mainFrame').ready(function() {

            $('#mainFrame a').live('click', function() {
                alert('u click');
                return false;
            }); 

        });

    });

</script>

</head>
<frameset id="main" rows="125,*" cols="*">
<frame src="header.html" name="headerFrame" id="headerFrame" />
<frame src="main.html" name="mainFrame" id="mainFrame"  />
</frameset>
</html>

Я хотел бы иметь возможность перехватывать ссылки, которые нажимаются на фрейме «mainFrame». Я думал, что могу просто добавить готовое событие для него, а затем живые события щелчка привязки, но это не работает. Любые идеи?

Примечание. Все файлы находятся в одном домене, поэтому это не проблема XSS.


person Tegan Snyder    schedule 07.10.2010    source источник


Ответы (1)


<script>
$(document).ready(function(){
  $('#mainFrame').ready(function() {
    var f = document.getElementById('mainFrame').contentWindow.document;
    $('a', f).live('click', function() {
      alert('u click');
      return false;
    });
  });
});
</script>

Вам просто нужно добавить контекст к оператору jQuery, чтобы указать ему, где искать #mainFrame a

Ах да .... вам обязательно нужно убедиться, что iframe загружен. «Живой» должен позаботиться об этом ... но сейчас я работаю над чем-то, где мне пришлось написать собственный плагин ready () для jQuery, чтобы убедиться, что мои кадры загружены, потому что у меня были проблемы с Chrome.

Chrome и IE, кажется, бросаются в глаза с помощью document.addEventListener("DOMContentLoaded"... что, я считаю, является тем, что используют функции ready() в jQuery.

В любом случае, просто убедитесь, что ваши iframe загружаются полностью.

person Senica Gonzalez    schedule 07.10.2010