Перехватить клики по ссылкам из фрейма - PullRequest
0 голосов
/ 08 октября 2010

У меня есть старая страница моды, в которой используется набор фреймов, содержащий верхнюю и нижнюю рамки. Набор фреймов определен в "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.

1 Ответ

2 голосов
/ 08 октября 2010
<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 загружен,Об этом должно позаботиться "live" ... но сейчас я работаю над чем-то, где мне пришлось написать собственный плагин ready () для jQuery, чтобы убедиться, что мои кадры были загружены, потому что у меня были проблемы с Chrome.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...