Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   iframe на javascript в Chrome (https://javascript.ru/forum/css-html-browser/29059-iframe-na-javascript-v-chrome.html)

spals 13.06.2012 21:02

В опере как всегда всё отлично работает, а вот в хроме опять же есть предыдущая страничка была в высоту больше, то если страничка меньшей высоты остаётся высота предыдущей (большей по ысоте)

ТЫК

Зато при скрипте который ниже, в хроме высота выравнивается верно но в опере наоборот.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>auto iframe height adjust</title>
 <style>
 </style>
 <script type="text/javascript">
 <!--//
 function sizeFrame(frameId) {
 var F = document.getElementById(frameId);
 if(F.contentDocument) {
 F.height = F.contentDocument.documentElement.scrollHeight+30; //FF 3.0.11, Opera 9.63, and Chrome
 } else {



 F.height = F.contentWindow.document.body.scrollHeight+30; //IE6, IE7 and Chrome

 }

 }

 //-->
 </script>
 </head>
 <body>
 <iframe width="100%" id="myFrame" src="http://cs.city.kg/cs" scrolling="no" frameborder="0" onload="sizeFrame('myFrame')">
 </iframe>
 </body>
 </html>

spals 13.06.2012 21:32

Просто как не хочется делать выбор между хромом и оперой :(

bes 13.06.2012 22:07

Посмотрел ваш "тык", походил по страничкам, вроде всё чётко работает, что в опере, что хроме, что не так?
Хотя нет, вижу у вас на других страничках старый код выравнивания остался.

spals 13.06.2012 22:20

bes об этом я вам и говорю.
Надо как то совместить:

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

Это для хрома
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>auto iframe height adjust</title>
 <style>
 </style>
 <script type="text/javascript">
 <!--//
 function sizeFrame(frameId) {
 var F = document.getElementById(frameId);
 if(F.contentDocument) {
 F.height = F.contentDocument.documentElement.scrollHeight+0; //FF 3.0.11, Opera 9.63, and Chrome
 } else {



 F.height = F.contentWindow.document.body.scrollHeight+0; //IE6, IE7 and Chrome

 }

 }

 //-->
 </script>
 </head>
 <body>
 <iframe width="100%" id="myFrame" src="http://cs.city.kg/cs" scrolling="no" frameborder="0" onload="sizeFrame('myFrame')"
  onload=" this.height = this.contentWindow.document.body.scrollHeight; 
"></iframe>
 </body>
 </html>


Это для оперы
<iframe src="http://cs.city.kg/cs" width="100%" scrolling="no" frameborder="0" marginheight="0" marginwidth="0"
  onload=" this.height = this.contentWindow.document.body.scrollHeight; 
"></iframe>

bes 13.06.2012 23:46

Вставите свои адреса, у меня работает, что в опере, что в хроме.
<iframe width="100%" id="myFrame" src="index1.html" scrolling="no" frameborder="0"
   onload="
    var content = this.contentWindow || this.contentDocument;
    this.height = 0;
    this.height = content.document.body.scrollHeight; 
" >
</iframe>
<button onclick="document.getElementById('myFrame').location.href = 'index2.htm'">click</button>

spals 14.06.2012 00:14

bes большое вам спасибо! :)

spals 14.06.2012 00:18

Очень хорошо помогли

bes 31.05.2013 19:57

Цитата:

Сообщение от bes
 var content = this.contentWindow || this.contentDocument;
4
    this.height = 0;
5
    this.height = content.document.body.scrollHeight;

со временем понимаешь какую хрень писал, получая ссылку либо на окно фрейма, либо на его документ, а потом используя ссылку лишь на окно

хотя я и до сих пор не понимаю зачем городить этот выбор между contentWindow.document и contentDocument,
если contentWindow поддерживается везде, кроме IE5, про который уже давно забыли, и это самый короткий кроссбраузерный способ получить документ фрейма (frameObject.contentWindow.document),
а contentDocument не поддерживается IE<8 и соответственно не работает в IE8+ в документе без doctype, так как в этом случае идёт переход в режим совместимости
хотя если забить на IE7 и тестить при указании doctype, то contentDocument конечно лучше


Цитата:

Сообщение от bes
Заработает, когда будет на сервере (или через denwer, например), на локальном компьютере проверить не даст политика безопасности.

сейчас понимаю, что денвер для лохов :D

spals 16.12.2013 21:44

bes,
Хах, ясно, все приходит с опытом, а я так ничего не начал понимать в jquery

Deff 16.12.2013 22:59

Цитата:

Сообщение от bes
и это самый короткий кроссбраузерный способ

:)
frameName.document


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