вызов функции из дочернего окна с помощью window.opener работает в IE, но не в Firefox - PullRequest
2 голосов
/ 25 января 2012

Я работаю над сайтом, который имеет три фрейма.Верхний кадр, основной кадр и нижний кадр с именами topFrame, mainFrame, bottomFrame в наборе кадров.Ничего необычного.

Работая в mainFrame, у меня есть страница с именем view.html, которая содержит функцию refresh_status ().

Это выглядит так:

function refresh_status() {
   alert ("inside of refresh status function");
   // do stuff  
}

Кроме того, на этой странице (view.html) я просто открываю (по ссылке) новое дочернее окно, например:

Ссылка выглядит следующим образом ...

<a href="javascript:popUpstatus('status.html')">Update</a>

Функция, которая открывает новое окно ....

function popUpstatus(URL) {
status = window.open(URL,     'status','toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=670,height=600');
}

Файл status.html обычно открывается в новом дочернем окне.В дочернем окне у меня есть ссылка, из которой я пытаюсь запустить функцию refresh_status () в родительском окне (view.html).

В дочернем всплывающем окне (status.html)), это ссылка ....

<a name="select_anchor" href="#">Refresh</a>

JavaScript в status.html выглядит следующим образом ....

<script type="text/javascript">
    function new_status() {
    window.opener.refresh_status();
}

$(document).ready(function() {
    $("a[name='select_anchor']").click(new_status());

});
</script>

IE8 запустит функцию refresh_status () в родительском окне и вызовет предупреждение, как и ожидалось, однако Firefox жалуется и говорит, что window.opener.refresh_status () не является функцией.Есть идеи?

1 Ответ

0 голосов
/ 28 января 2012

Если вы хотите позвонить new_status при щелчке по событию ссылки, вам просто нужно удалить скобки

 $("a[name='select_anchor']").click(new_status);

, потому что когда вы пишете это

 $("a[name='select_anchor']").click(new_status());

, выустанавливается результат функции в качестве обработчика события

...