Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 04.06.2016, 07:53
Интересующийся
Отправить личное сообщение для MrBean Посмотреть профиль Найти все сообщения от MrBean
 
Регистрация: 01.06.2016
Сообщений: 22

Если содержимое iframe формировать через document.write, браузер почему-то отображает содержимое в кодировке родительского для iframe документа. Писал об этом в первом посте.
Ответить с цитированием
  #12 (permalink)  
Старый 04.06.2016, 08:12
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от MrBean
Если содержимое iframe формировать через document.write, браузер почему-то отображает содержимое в кодировке родительского для iframe документа. Писал об этом в первом посте.
Вы заголовок вписываете и с требуемой кодировкой во фрейм ? (Или ток body втыкаете ?
Например:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
И.т.д. ...

2. Есть возможность через XMLHttpRequest получать документ в желаемой кодировке, поищите где нидь тут https://developer.mozilla.org/ru/docs/XMLHttpRequest

3.Вы во фрейме втыкаете в контент, а нужно через write вписывать полный контекст документа(вместе шапкой и хидером) перезаписывать в пустой фрейм, я показал как ранее(используя имя фрейма)
4. Есть уверенность что символы уже не обрезаны при получении контента ? ( Т.е. символы кракозябров имеют не один и тот же код ? попробуйте просмотреть коды нескольких символов подряд
5. Код заголовка шапки и хидера вставляемый во фрейм должен быть тоже закодирован и вставляем в той же кодировке, что и контент, сохранить в тектовый документ в нужной(желаемой) кодировке, скопировать и вставить на страницу (или в блокнот) с utf-8 - cкопировать и вставить в скрипт переменную. Геммор ещё тот, проще взять кодер-декодер utf-8 в windows-1251

(Где то тут на форуме решал подобную задачу, отправку поискового запроса Аяксом трансформируя текст (прописанного яваскрипт переменной), т.е.UTF-8 в windows-1251

Последний раз редактировалось Deff, 04.06.2016 в 08:40.
Ответить с цитированием
  #13 (permalink)  
Старый 04.06.2016, 10:08
Интересующийся
Отправить личное сообщение для MrBean Посмотреть профиль Найти все сообщения от MrBean
 
Регистрация: 01.06.2016
Сообщений: 22

1. Вот пример вставляемого кода из первого поста:
<!doctype html>
<html>
	<head>
		<meta charset="windows-1251">
	</head>
	<body>
		<p>Строка в кодировке windows-1251.</p>
	</body>
</html>
Здесь есть и doctype, и head, и meta charset, и body. К слову, код в формате XHTML вставлять тоже пробовал - разницы никакой.

2. С получением кода в другой кодировке проблем нет.

3. Тестовый код идентичен тому, что вы показывали. Смотрим первый пост.

4. Такая уверенность есть. Проверялось переключением кодировки в браузере. То есть если переключить кодировку в браузере на кодировку вставляемой строки, кракозябры пропадают.

5. Чтобы кодировки не слетели от копирования, тестовый пример генерирую php-скриптом. То есть этот подвох учитывается.
Ответить с цитированием
  #14 (permalink)  
Старый 04.06.2016, 12:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body>
<p>Это родительская страница в UTF, с сайтом в кодировке CP1251 загруженным во фрейм</p> 
<iframe src="http://winrus.com/cpage_r.htm" width="600" height="400"></iframe>
</body> 
</html>


И как, проблемы есть?
Ответить с цитированием
  #15 (permalink)  
Старый 04.06.2016, 13:57
Интересующийся
Отправить личное сообщение для MrBean Посмотреть профиль Найти все сообщения от MrBean
 
Регистрация: 01.06.2016
Сообщений: 22

laimas, проблемы есть, речь идет о динамическом формировании содержимого iframe, которое почему-то не работает также как в вашем примере.
Ответить с цитированием
  #16 (permalink)  
Старый 04.06.2016, 15:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script> 
$(function() {
    $('<iframe/>').appendTo('body').css({width : 600, height : 400}).attr('src', 'http://winrus.com/cpage_r.htm')
});
</script>     
</head> 

<body>
<p>Вы лучше поясните чем вы занимаетесь, ибо суть поста "неизвестная кодировка", а документу фрейма кодировку то нужно указывать. Так ли она неизвестна тогда?</p>
<p>Динамическое добавление фрейма не определяет кодировку его документа, кодировка определяется в документе загруженном в него.</p>
</body> 
</html>
Ответить с цитированием
  #17 (permalink)  
Старый 04.06.2016, 16:02
Интересующийся
Отправить личное сообщение для MrBean Посмотреть профиль Найти все сообщения от MrBean
 
Регистрация: 01.06.2016
Сообщений: 22

Есть же конкретная задача, содержимое iframe нужно сформировать из строки. О том, что через src работает, я писал сразу. Похоже, тема совсем безнадежная, столько ответов и даже с условиями задачи толком не разобрались.
Ответить с цитированием
  #18 (permalink)  
Старый 04.06.2016, 16:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Еще раз - кодировку документа в iframe вы должны указать (это сделать можно, как и записать в бланк изначально загруженный что угодно). Если вы должны, то кодировка этой строки должна быть вам известна. Вы же пишите, что она не известна. И если это всего лишь строка, то не понятно чего вы до сих пор паритесь, не конвертируя ее в кодировку с которой работает страница, а паритесь с фреймом.
Ответить с цитированием
  #19 (permalink)  
Старый 04.06.2016, 16:29
Интересующийся
Отправить личное сообщение для MrBean Посмотреть профиль Найти все сообщения от MrBean
 
Регистрация: 01.06.2016
Сообщений: 22

Как указать кодировку iframe, если meta charset игнорируется браузером во вставляемой строке? О заведомо неизвестной кодировке пишется для того, чтобы решение не было привязано к этой кодировке, это не значит, что она не указана в теле вставляемой строки. Смотрим мой пример кода.
Ответить с цитированием
  #20 (permalink)  
Старый 04.06.2016, 16:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MrBean
Как указать кодировку iframe, если meta charset игнорируется браузером во вставляемой строке?
С чего это вдруг?

Значит пусть сервер отдает страницу, и либо в мета, либо заголовками вы определяете ее кодировку и пусть это будет UTF. Значит и скрипт этот должен сохраняться в UTF.

Пусть на этой же странице есть некий js-сценарий, в котором вы пытаетесь записать в создаваемый iframe (что в общем то не важно, он может уже и быть на странице) слово "тест". В какой кодировке будет это слово? Также в UTF, так как оно отдано одним потоком скриптом в utf и объявленной utf кодировкой.

То есть, нечто иной кодировки как переменная должно получаться отдельным запросом. И пусть это у вас выполняется. Тогда:

$(создаем и помещаем на страницу iframe, указав в качестве src "about:blank").load(function() {
    //вот так можно получить head фрейма
    $(this.contentWindow.document.head) //чисто на jQ, это .content() 
    //в котором можно объявить кодировку вставив метатег charset
    //соответственно тело документа
    $(this.contentWindow.document.body)
    //куда можете записывать свои строки или что угодно
})

Последний раз редактировалось laimas, 04.06.2016 в 17:09.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jCarousel - два раза на одной странице new jQuery 0 22.04.2010 22:20
Как перейти от одной формы к другой не используя header? Белая_Кошка Серверные языки и технологии 4 01.04.2010 02:47
Два одинаковых сценария на одной странице Genetics Общие вопросы Javascript 7 12.07.2009 01:46
Две одинаковые страницы: на одной скрипты видны, на другой нет Маня Общие вопросы Javascript 9 03.06.2009 11:57
Вставка текста с одной страницы в форму на другой странице Dima Общие вопросы Javascript 19 22.01.2009 17:35