Видимость скрипта включена в IFRAME

Например:

скрипт.js:

function functionFromScriptJS() {
    alert('inside functionFromScriptJS');
}

iframe.html:

<html>
<head>
<script language="Javascript" src="script.js"></script>
</head>
<body>

<iframe>
  <body>
     <script language="JavaScript">
       functionFromScriptJS();
     </script> 
  </body> 
</iframe>

</body>
<html>

Приведенный выше вызов functionFromScriptJS() не работает.

Первое предположение parent.functionFromScriptJS() тоже не работает.

Можно ли получить доступ к такой внешней функции из iframe, когда включение находится не в самом iframe, а в родительском документе?

@Edit: Итак, моя ошибка заключалась в том, что я поместил документ в тег iframe, и мне следовало поместить его в отдельный файл и указать через атрибут src тега. В этом случае работает parent.functionFromScriptJS().


person axk    schedule 04.12.2008    source источник


Ответы (2)


фреймы не поддерживают встроенный контент. вы должны использовать атрибут src для ссылки на другой файл. Внутренний текст тега <iframe> будет отображаться в браузерах, не поддерживающих iframe.

Пример:

<iframe src="someFile.html" width="100%" height="300px">
  <p>Your browser does not support iframes.</p>
</iframe>

Как только ваша страница загрузится, вы сможете вызвать скрипт, используя parent.functionFromScriptJS();

person Ryan Cook    schedule 04.12.2008
comment
Спасибо за заметку! Я перепишу пример и попробую. - person axk; 04.12.2008

Лучшим решением здесь, я думаю, было бы не использовать iframe (хотя формально он не объявлен устаревшим, он не фигурирует в спецификации XHTML 1.1) и использовать AJAX для захвата страницы и загрузки ее в <div>

Тогда функции javascript будут работать как обычно!

person adam    schedule 04.12.2008
comment
'и загрузить его в ' ? Кажется, что этот ответ содержал тег, поэтому больше не отображается. Кто-нибудь возьмется исправить? ;) - person rotoglup; 11.07.2011