10.07.2013, 01:06
|
Интересующийся
|
|
Регистрация: 07.03.2012
Сообщений: 28
|
|
Кодировка iframe. Скрипт с внешнего сайта.
Всем доброго времени суток. Возникла следующая проблема: при подключении скрипта с внешнего сайта (скрипт погоды) через iframe, сбивается кодировка. Сам документ в кодировке utf-8 без bom, meta кодировка тоже стоит utf-8, документ загружаемый в iframe с такой же meta и кодировкой. (скрипт подключается именно в документе, загружаемом в iframe, а не напрямую в iframe). htaccess тоже настроен на utf-8. Уже не знаю что предпринять! Заранее спасибо за помощь!
|
|
10.07.2013, 02:23
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Непонятно - скрипт - во фрейме ?
2. Кодировка сбивается во фрейме или на основном документе ?
3. Засуньте погоду не скриптом, а фреймом с оффсайта
|
|
10.07.2013, 13:18
|
Интересующийся
|
|
Регистрация: 07.03.2012
Сообщений: 28
|
|
На сайте погоды я сгенерировал код для информера. Среди обычного 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 теги для задания кодировки.
|
|
10.07.2013, 13:29
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Так и не увидел подробного описания проблемы. Все что было сказано, это "сбивается кодировка". Зато нытья и восклицательных знаков полно.
|
|
10.07.2013, 13:42
|
Интересующийся
|
|
Регистрация: 07.03.2012
Сообщений: 28
|
|
Так ок сейчас попробую подробно.
На сайте 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, то все отобразится корректно, и браузер запомнит как надо выводить (при последующей перезагрузке страницы выведет как надо),но пользователь такие манипуляции проводить не будет.
Вроде так подробно.
|
|
10.07.2013, 14:12
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
HaseProgram,
Сообщение от HaseProgram
|
Этот код я скопировал в файл weather.html, добавив <head>, куда прописал <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> и засунул тег <script>, и этот файл я подключаю на странице моего сайта:
|
1. Мало прописать <meta http-equiv="Content-Type" content="text/html; charset=utf-8">. Дык а сервер отдаёт данную страницу в какой кодировке ?
2. Нафига менять кодировку во фрейме по сравнению с основным Документом ?
- Делайте в той-же, что и основной документ(работа скрипта Погоды не должна зависить от кодировки..)
3. А нафига вообще фрейм? Вставить просто табличку и скрипт
|
|
10.07.2013, 14:21
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
РњРѕСЃРєРІР° - это слово Москва, записанное в кодировке utf-8, но интерпретированное как кодировка ANSI. То есть скорей всего сервер выставляет заголовок Content-Type: text/html; charset=cp-1251, а он имеет преимущество перед <meta http-equiv> Смотрите в консоль браузера, вкладка Сеть
|
|
10.07.2013, 15:11
|
Интересующийся
|
|
Регистрация: 07.03.2012
Сообщений: 28
|
|
Цитата:
|
РњРѕСЃРєРІР° - это слово Москва, записанное в кодировке utf-8, но интерпретированное как кодировка ANSI. То есть скорей всего сервер выставляет заголовок Content-Type: text/html; charset=cp-1251, а он имеет преимущество перед <meta http-equiv> Смотрите в консоль браузера, вкладка Сеть
|
Да, Вы абсолютно правы.
Цитата:
|
2. Нафига менять кодировку во фрейме по сравнению с основным Документом ?
- Делайте в той-же, что и основной документ(работа скрипта Погоды не должна зависить от кодировки..)
|
Я как раз прописываю кодировку, в которой основной документ, без <meta> Выдает точно такой же результат, я просто решил попробовать.
Цитата:
|
3. А нафига вообще фрейм? Вставить просто табличку и скрипт
|
Скорость загрузки повышается. Внешний сайт не всегда быстро отвечает на запрос, а загрузка моего сайта приостанавливается, пока идет запрос на внешний ресурс. Однако, как ни странно, этот способ помог. Придется мириться с переменной скоростью.
Огромное вам спасибо!
P.S. Плюсы в профиль не ставятся, просят поставить кому-нибудь другому, хотя вам я ставил достаточно давно и не последним...
|
|
10.07.2013, 15:45
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от HaseProgram
|
Скорость загрузки повышается. Внешний сайт не всегда быстро отвечает на запрос, а загрузка моего сайта приостанавливается, пока идет запрос на внешний ресурс. Однако, как ни странно, этот способ помог. Придется мириться с переменной скоростью.
|
Дык вставьте скрипт в самый низ страницы, после таблички воткните скрипт переноса контента в нужное место
Цитата:
|
<script type="text/javascript">
document.getElementById('Id -Блока куда переставить').appendChild(document.getElementById('weacoblock '))
</script>
|
Последний раз редактировалось Deff, 10.07.2013 в 15:53.
|
|
10.07.2013, 15:47
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Можно динамически подключать скрипт , а по окончанию загрузки скрипта вывести нужную информацию. Таким образом загрузка скрипта не будет блокировать загрузку страницы:
<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 в коде выше)
|
|
|
|