Видимость скрипта, включенного в IFRAME
-
19-08-2019 - |
Вопрос
Например:
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 будут работать в обычном режиме!