Кодировка iframe. Скрипт с внешнего сайта.
Всем доброго времени суток. Возникла следующая проблема: при подключении скрипта с внешнего сайта (скрипт погоды) через iframe, сбивается кодировка. Сам документ в кодировке utf-8 без bom, meta кодировка тоже стоит utf-8, документ загружаемый в iframe с такой же meta и кодировкой. (скрипт подключается именно в документе, загружаемом в iframe, а не напрямую в iframe). htaccess тоже настроен на utf-8. Уже не знаю что предпринять! Заранее спасибо за помощь!
|
Непонятно - скрипт - во фрейме ?
2. Кодировка сбивается во фрейме или на основном документе ? 3. Засуньте погоду не скриптом, а фреймом с оффсайта |
На сайте погоды я сгенерировал код для информера. Среди обычного html в коде, есть подключаемый скрипт
<script language="javascript" src="http://infrm.weather.ua/js/2970/1/1ru.js"></script> Весь код я запихнул в weather.html и подключаю его на сайте: <iframe src="weather.html" width="200" height="400" align="absmiddle" frameborder="no" scrolling="no"></iframe> В wether.html я добавил meta теги для задания кодировки. |
Так и не увидел подробного описания проблемы. Все что было сказано, это "сбивается кодировка". Зато нытья и восклицательных знаков полно.
|
:D
Так ок сейчас попробую подробно. На сайте weather.html я взял код для информера: <script language="javascript" src="http://infrm.weather.ua/js/27.85.2845.2873.88.87.2940.51671.13443.94.2962.2970/1/1ru.js"></script> <div id="weacoblock"> <table cellpadding="0" cellspacing="0" id="hov" > <tr onmouseover="this.className='hovered';" onmouseout="this.className='old_class';"> <td class="cll">Москва</td> <td class="clc"><script type="text/javascript">document.write(i_cloud_image27)</script></td> <td class="clr"><script type="text/javascript">document.write(i_t27)</script></td> </tr> </table> </div> Этот код я скопировал в файл weather.html, добавив <head>, куда прописал <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> и засунул тег <script>, и этот файл я подключаю на странице моего сайта: <iframe src="weather.html" width="200" height="400" align="absmiddle" frameborder="no" scrolling="no"></iframe> При загрузке страницы iframe отдает сущности (РњРѕСЃРєРІР°). Если на странице поменять вручную кодировку на cp-1251, а потом опять на utf-8, то все отобразится корректно, и браузер запомнит как надо выводить (при последующей перезагрузке страницы выведет как надо),но пользователь такие манипуляции проводить не будет. Вроде так подробно. |
HaseProgram,
Цитата:
2. Нафига менять кодировку во фрейме по сравнению с основным Документом ? - Делайте в той-же, что и основной документ(работа скрипта Погоды не должна зависить от кодировки..) 3. А нафига вообще фрейм? Вставить просто табличку и скрипт |
РњРѕСЃРєРІР° - это слово Москва, записанное в кодировке utf-8, но интерпретированное как кодировка ANSI. То есть скорей всего сервер выставляет заголовок Content-Type: text/html; charset=cp-1251, а он имеет преимущество перед <meta http-equiv> Смотрите в консоль браузера, вкладка Сеть
|
Цитата:
Цитата:
Цитата:
Огромное вам спасибо! P.S. Плюсы в профиль не ставятся, просят поставить кому-нибудь другому, хотя вам я ставил достаточно давно и не последним... |
Цитата:
Цитата:
|
Можно динамически подключать скрипт , а по окончанию загрузки скрипта вывести нужную информацию. Таким образом загрузка скрипта не будет блокировать загрузку страницы:
<div id="weather"> <span id="weather-icon"></span> <span id="weather-temp"></span> </div> <script> (function(){ var script = document.createElement('script'); script.onload = function() { document.getElementById('weather-icon').innerHTML = i_cloud_image27; document.getElementById('weather-temp').innerHTML = i_t27; }; script.src = '//domain.com/path/to/script.js'; document.body.appendChild(script); })() </script> А можно сделать проще. Оставить разметку где нужно вывести погоду, а скрипт опустить в конец страницы. А в следующем скрипте вставить значения переменных в разметку (смотри script.onload в коде выше) |
Часовой пояс GMT +3, время: 20:47. |