iframe на javascript в Chrome
Всем добрый день, прошу помощи, у меня проблема с отображение iframe на javascript в Chrome, в других браузерах всё нормально, проблема в том что страничка начинает ползти вниз, при первой загрузке всё нормально но в последующих перемещениях по страничкам сама страничка ползёт вниз. До бесконечности. В чём может быть проблема? Что можно изменить в коде? За помощь буду очень благодарен.
Вот моежете проверить сами ТЫК <!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=windows-1251" /> <title>Demo iframe Resize by Exterior</title> <script type="text/javascript"> <!-- var timeout; function clickAction() { frameFitting(); var fr = document.getElementById('demo_frame').contentWindow.document.body.getElementsByTagName('a'); for (var i=0; i<fr.length; i++) { fr[i].onclick = function() { clearInterval(timeout); timeout = setInterval("frameFitting()",100); } } } function frameFitting() { document.getElementById('demo_frame').width = '100%'; document.getElementById('demo_frame').height = document.getElementById('demo_frame').contentWindow.document.body.scrollHeight+4+'px'; } onload = clickAction; //--> </script> </head> <body> <iframe src="http://cs.city.kg/stats/index.php" id="demo_frame" align="center" scrolling="no" frameborder="0" marginheight="0" marginwidth="0" width="100%"></iframe> </body> </html> |
Help:-?
|
У вас frameFitting() увеличивает высоту фрейма , а в clickAction() назначаются обработчики кликов по ссылкам: нажав какую-нибудь ссылку, вы запустите setInterval, который будет вызывать frameFitting() через 100мс, что и будет постепенно увеличивать высоту фрейма.
Не совсем понятно, чего вы хотите добиться, назначая такие обработчики клика ссылкам. |
Я в жатве пока совсем дуб, мне всего то что бы страница не съезжала вниз, вот щас порыскал по форуму ничего путного на замену не нашёл.
Мне самое главное автоматическая прокрутка, что бы не было это го ползунка... |
Цитата:
|
да, я нашёл еще один код, он нормально пашет в хроме, а вот в опере наоборот, можно ли сделать для каждого браузера свой скрипт?
|
Скажите, что хотите сделать-то?
|
Мне нужно что бы скрипт чётко подгонял страничку в iframe в высоту.
Вот немного получше, в хроме он не ползёт сам вниз но он подгоняет странички не верно, если предыдущая страничка была больше то под меньшую он уже не подгонит. <!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" /> <script language="JavaScript"> <!-- function autoResize(id){ var newheight; var newwidth; if(document.getElementById){ newheight=document.getElementById(id).contentWindow.document .body.scrollHeight; newwidth=document.getElementById(id).contentWindow.document .body.scrollWidth; } document.getElementById(id).height= (newheight) + "px"; document.getElementById(id).width= (newwidth) + "px"; } //--> </script> <IFRAME SRC="http://cs.city.kg/cs" width="100%" height="200px" id="iframe1" marginheight="0" frameborder="0" onLoad="autoResize('iframe1');"></iframe> </body> </html> |
Попробуйте так
<iframe src="index.htm" onload=" this.height = this.contentWindow.document.body.scrollHeight; "></iframe> |
То есть используйте обработчик загрузки фрейма, в который и поместите код задания размеров этого фрейма (больше ничего не требуется).
Заработает, когда будет на сервере (или через denwer, например), на локальном компьютере проверить не даст политика безопасности. |
В опере как всегда всё отлично работает, а вот в хроме опять же есть предыдущая страничка была в высоту больше, то если страничка меньшей высоты остаётся высота предыдущей (большей по ысоте)
ТЫК Зато при скрипте который ниже, в хроме высота выравнивается верно но в опере наоборот. <!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> |
Просто как не хочется делать выбор между хромом и оперой :(
|
Посмотрел ваш "тык", походил по страничкам, вроде всё чётко работает, что в опере, что хроме, что не так?
Хотя нет, вижу у вас на других страничках старый код выравнивания остался. |
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> |
Вставите свои адреса, у меня работает, что в опере, что в хроме.
<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> |
bes большое вам спасибо! :)
|
Очень хорошо помогли
|
Цитата:
хотя я и до сих пор не понимаю зачем городить этот выбор между contentWindow.document и contentDocument, если contentWindow поддерживается везде, кроме IE5, про который уже давно забыли, и это самый короткий кроссбраузерный способ получить документ фрейма (frameObject.contentWindow.document), а contentDocument не поддерживается IE<8 и соответственно не работает в IE8+ в документе без doctype, так как в этом случае идёт переход в режим совместимости хотя если забить на IE7 и тестить при указании doctype, то contentDocument конечно лучше Цитата:
|
bes,
Хах, ясно, все приходит с опытом, а я так ничего не начал понимать в jquery |
Цитата:
frameName.document |
Часовой пояс GMT +3, время: 02:21. |