Как вызвать функцию родительского окна в браузере Chrome? - PullRequest
6 голосов
/ 31 марта 2010

HI, Я неожиданно обнаружил проблемы в браузере Chrome при вызове оконных родительских функций javascript. Если у меня есть окно с функцией JavaScript, определенной в нем

<script type="text/javascript">
  function dolink() {
   . . .
  }
</script>

и у меня есть iframe внутри этого окна, которое делает этот вызов с использованием jquery

<script type="text/javascript">
 $(function() {
      $('a.arglink').click(function() {
         window.parent.dolink($(this).attr('href'));
         return false;
      });
 });
</script>

вызов функции dolink не работает. Начиная с chrome javascript отладчика, кажется, что window.parent.dolink равен undefined . Это по замыслу или ошибка, которую я сделал? В Firefox и IE он работает нормально.

Ответы [ 4 ]

9 голосов
/ 07 апреля 2010

Наконец-то нашел!

Похоже, что браузер Chrome не позволяет ссылаться на родительское окно для доступа к страницам с файлом : протокол . На самом деле я тестировал приведенный выше код с файлами на моей машине, поэтому с URL-адресом вроде file:///C:/mytests/mypage.html. Если я помещу эту страницу на веб-сервер, все будет работать как положено.

4 голосов
/ 06 сентября 2010

Вы должны называть код таким образом

if(function != undefined)
{
 $(function() {
      $('a.arglink').click(function() {
         window.parent.dolink($(this).attr('href'));
         return false;
      });
 });
}
2 голосов
/ 31 марта 2010

Как насчет использования frameElement и ownerDocument

<script type="text/javascript">
 $(function() {
      $('a.arglink').click(function() {
         window.frameElement.ownerDocument.parentWindow.dolink($(this).attr('href'));
         return false;
      });
 });
</script>
0 голосов
/ 15 марта 2018

Я просто сделал это, и у меня это работает

в iframe

function sendToParent() {
    parent.doSomething(); 
}
sendToParent();

в родительском

function doSomething() {
    alert('did it!')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...