Javascript / jQuery: вызов функции в другом кадре - PullRequest
3 голосов
/ 17 августа 2010

Я новичок в DOM и JavaScript и сталкиваюсь с некоторыми проблемами при попытке вызвать функцию, определенную во фрейме, из контекста фрейма верхнего уровня или Firebug.

Учитывая следующий набор фреймов:

<html>
    <body>
    <frameset cols="*" rows="81,*">
        <frame id="topFrame" tabindex="1" name="topFrame" noresize="noresize" scrolling="No" src="hometop.aspx"/> 
        <frameset border="0" cols="214,*" frameborder="no" framespacing="0">
            <frameset border="0" cols="*" frameborder="no" framespacing="0" rows="70,*">
                <frame tabindex="-1" id="chatFrame" name="chatFrame" scrolling="No" noresize="noresize" src=""/>
                <frame tabindex="-1" id="leftFrame" name="leftFrame" noresize="noresize" src="leftFrame.aspx"/>
            </frameset> 
            <frame tabindex="-1" id="mainFrame" name="mainFrame" src=""/>
        </frameset> 
        <noframes>Your browser does not support frameset.</noframes> 
    </frameset>
    </body>
</html>

Я пытаюсь написать хук javascript, который будет вызывать функцию javascript, определенную в # leftFrame при первом открытии вышеуказанного документа. Я выполняю это в сеансе Firebug с jQuery .

jQuery ("# ​​leftFrame") возвращает элемент DOM кадра. Теперь я хотел бы выполнить мою функцию ( openLink , определенную в виде простого старого тега сценария в leftFrame.aspx) в контексте фрейма. Насколько я понимаю, функция будет узлом DOM под элементом документа leftFrame . Однако я не могу достать документ фрейма.

Я пробовал:

 jQuery("#leftFrame").document
 jQuery("#leftFrame").contentDocument
 jQuery("#leftFrame").find("html")

Также при проверке дерева DOM в Firebug я не вижу функции openLink под любыми узлами DOM, как я ожидал.

Кто-нибудь может мне помочь?

1 Ответ

7 голосов
/ 17 августа 2010
$('#leftFrame')[0].contentWindow.document
$('#leftFrame')[0].contentWindow.functionName()

Выше должно работать.contents() в jQuery работает только на узле iframe, поэтому вам придется ссылаться на него следующим образом.

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