Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Динамическое создание iframe в Firefox (https://javascript.ru/forum/css-html-firefox-mizilla/32881-dinamicheskoe-sozdanie-iframe-v-firefox.html)

mrbean11 02.11.2012 11:57

Динамическое создание iframe в Firefox
 
Здравствуйте.
Я создал страницу 1.html
В ней с помощью javascript я создаю iframe со значением src=1.html , т.е. с этой же страницей. Вот так:
var iframe = document.createElement('IFRAME')
iframe.name = 'iname'
iframe.setAttribute('src', document.location.href)
document.body.appendChild(iframe)

Этот код находится в функции, которая вызывается при нажатии на кнопку; не автоматически при загрузки страницы.
Проблема следующая: в некоторых браузерах этот iframe не работает, т.е. не отображается его содержимое. Только в браузере Opera все работает как надо.
Что мне сделать, чтобы в браузерах IE и Firefox iframe работал нормально?
Спасибо.

Skipp 02.11.2012 13:03

var iframe = document.createElement('iframe');
iframe.name = 'iname';
iframe.src = document.location.href;
iframe.style.width = "100px";
iframe.style.height = "100px";
document.body.appendChild(iframe);

mrbean11 02.11.2012 13:36

Цитата:

Сообщение от Skipp (Сообщение 213690)
var iframe = document.createElement('iframe');
iframe.name = 'iname';
iframe.src = document.location.href;
iframe.style.width = "100px";
iframe.style.height = "100px";
document.body.appendChild(iframe);

Нет, так не работает.
iframe упорно отказывается открывать ту же страницу, в которой создается.

melky 02.11.2012 14:07

Цитата:

Сообщение от mrbean11
iframe упорно отказывается открывать ту же страницу, в которой создается.

... а эта страница пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся, которая пытается открыть ту, в которой создаётся ...

надеюсь, вы поняли, о чём я :)

Skipp 02.11.2012 14:08

У меня всё работает, покажите код, целиком
Но iframe всё равно создастся.

mrbean11 02.11.2012 16:25

Цитата:

Сообщение от melky
надеюсь, вы поняли, о чём я

Да, я понял. То, что вы описали произойдет в том случае, когда iframe динамически создается в событии onload (при загрузке) или если он уже прописан в html коде.
Я имею в виду тот случай, когда iframe создается после нажатия на кнопку, например так:
Текст файла 1.html
<html>
<head>
<title>Page</title>
</head>
<body>
<input id="b1" type="button" value="Create iframe" onclick="obj.CreateIframe();"></input>
<script type="text/javascript">
var obj = {
CreateIframe : function () {
var iframe = document.createElement('IFRAME')
iframe.name = 'iname'
iframe.setAttribute('src', document.location.href) // или iframe.src = document.location.href
document.body.appendChild(iframe)
}
}
</script>
</body>
</html>


Дзен-трансгуманист, думаю, ваш вариант - не совсем то, что нужно

melky 02.11.2012 17:06

Цитата:

Сообщение от mrbean11
Да, я понял. То, что вы описали произойдет в том случае, когда iframe динамически создается в событии onload (при загрузке) или если он уже прописан в html коде.

разницы нет, когда это произойдёт. есть рекурсивное открытие страницы во фрейме, и похоже, что браузеры это чувствуют.

но дело, мне кажется, не в этом. я помню, что браузеры запрещают скриптам обращаться к файлам на диске.
попробуйте перенести страницу на удалённый хостинг - например, на http://jsbin.com

mrbean11 02.11.2012 17:30

melky, думаю, локальный файл или удаленный - разницы нет. Я пробовал помещать html-файл на локальном сервере и обращаться к нему как к удаленному, но результат тот же.
Дзен-трансгуманист, да, вы правы, можно изменить строку запроса.
Конечно, это звучит абсурдно, но нужно, чтобы строка запроса оставалась неизменной, т.е. файл всегда был одним и тем же, в данном случае - 1.html

mrbean11 02.11.2012 19:23

Всем спасибо за помощь.
Я нашел решение, хотя и очень извращенное.


Часовой пояс GMT +3, время: 00:53.