Невозможно изменить содержимое iFrame в Firefox 4 / IE - PullRequest
3 голосов
/ 03 мая 2011

У меня есть следующий код:

<html>
<head>
</head>
<body>
    <script type="text/javascript">
        var frame = document.createElement('iframe');
        frame.id = 'myFrame';
        document.getElementsByTagName('body')[0].appendChild(frame);
        var context = frame.contentWindow.document;
        context.body.innerHTML = 'testing';
    </script>
</body>
</html>

Это создает простой iframe, содержащий мой текст: 'testing'.

Это прекрасно работает в Chrome, но Firefox и IE отображают пустой iframe.

Есть идеи, что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 03 мая 2011

Вы можете сделать что-то вроде этого:

var frame = document.createElement('iframe');
frame.id = 'myFrame';
document.getElementsByTagName('body')[0].appendChild(frame);

frame = (frame.contentWindow) ? frame.contentWindow : (frame.contentDocument.document) ? frame.contentDocument.document : frame.contentDocument;
frame.document.open();
frame.document.write('testing');
frame.document.close();

Javascript по-разному интерпретируется всеми браузерами, так что это просто вопрос использования общего подхода.Это должно работать во всех браузерах.

Попробуйте.

1 голос
/ 03 мая 2011

Некоторые браузеры явно запрещают подобные вещи, поэтому вы не можете, например, загрузить чей-то банковский сайт в рамку и взаимодействовать с ним в Javascript.Эта ссылка:

http://spyder.wordpress.com/2006/05/31/hacking-around-firefox-security-in-order-to-actually-accomplish-something/

предполагает, что существуют некоторые ошибки, связанные с инициализацией пустого iframe, и эта:

http://www.iframehtml.com/iframe-security.html

имеет некоторые ресурсы для того, чтобы справиться с ними.

0 голосов
/ 03 мая 2011

Переписана последняя строка innerHTML, похоже, только на хром.

<script type="text/javascript">        
    var frame = document.createElement('iframe');        
    frame.id = 'myFrame';        
    document.getElementsByTagName('body')[0].appendChild(frame);        
    var context = frame.contentWindow.document;        
    context.write('testing');    
</script>

JS fiddle подтверждает, что он работает в IE, Chrome и Firefox:

http://jsfiddle.net/thebeebs/mDMaj/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...