Вопрос

Например:

script.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, а в родительском документе?

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

Это было полезно?

Решение

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

Пример:

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top