2010-02-03 1 views
0

Я пытаюсь получить доступ к функции JavaScript в программно созданной системе iFrame из функции JavaScript снаружи. Я пробовал несколько способов, но не был успешным. L ike window.frames['frameid'] и т. Д.Доступ к функции JavaScript в программном виде iFrame

Не могли бы вы предоставить мне правильный синтаксис?

+3

Как страница кадра, так и родительская страница находятся в одном домене? –

ответ

0

Вот более подходящий пример, основанный на ваших комментариев;)

Главная страница

<html> 
<head> 
    <title>Main Page</title> 
</head> 
<body> 
    <iframe src="iframe.html"></iframe> 
    <script> 
     var receiver = { 
      listen:function(msg){ 
      alert(msg); 
      } 
     }; 
    </script> 
</body> 
</html> 

Функция Iframe страница: iframe.html, но может быть JSP с аналогичным выходом

<html> 
<head> 
    <title>iframe page</title> 
    <script src="external.js"></script> 
</head> 
<body> 
    <!-- some content here --> 
    <script> 
     externalFunction('hello', window); 
    </script> 
</body> 
</html> 

И файл JS: external.js

function externalFunction(msg, w){ 
    w.parent.receiver.listen(msg); 
} 

Поместите эти 3 файла в один каталог и откройте главную страницу. Вы должны получить всплывающее окно с «привет».

+0

На самом деле, я использую инфраструктуру ExtJS. У меня JSP внутри iFrame, я хотел бы назвать javascript-функции в JSP из javascript-функции, вне которой в основном находится JS-файл. Будут ли варианты, о которых вы говорили, будут работать? Пожалуйста, уточните меня. – keiv

+0

Я бы сделал обратный, когда JSP загружен, вызовите объект родителя. Для этого добавьте тег сценария в самом конце тега BODY. И в этом скрипте добавьте команду parent.receiver.listen (msg). Объект «приемник» должен существовать как глобальный объект и иметь функцию «listen», а «msg» - это параметр, который вы отправляете этой функции. – Mic

+0

Mic, я добавил функцию в родительский JS-файл как, var receiver = {listen: function() {alert ('parent'); }} И добавил - parent.receiver.listen(); в теге скрипта тега BODY в JSP. Из родительского JS-файла у меня есть кнопка onClick, вызывающая функцию listen. Но, похоже, это не работает. Пожалуйста, дайте мне знать, если я буду делать, как вы упомянули. Но я хотел бы вызвать функцию 'test' в JSP извне. Цените свою помощь. – keiv

0

Да, они находятся в том же домене. Фактически, я использую инфраструктуру ExtJS. У меня JSP внутри iFrame, я хотел бы назвать javascript-функции в JSP из javascript-функции, вне которой в основном находится JS-файл.