PDA

Просмотр полной версии : Javascript+Русский шрифт+Opera=каракули.


Viroman
02.08.2003, 17:16
Кто сталкивался с этой проблемой. Во всех браузерах правильно отображается текст, который находится именно в самих яваскриптах. А в Опере сама страница отображается на русском правильно, стоит charset тэг с указанием на шрифт, а вот текст отображаемый самим яваскриптом на русском показывается как каракули. Народ как с этим бороться?

makkintosh
04.08.2003, 08:51
может прикол в том что сам ЭТОт текст кооторый в ява скриптах не в той кдеровке? и вообще ты не сказал какая опера. - это важно

Viroman
05.08.2003, 23:19
Опера всегда самая последняя, что можно было на офф странице скачать 7.11, на русском. Скрипт выдаёт бегущую строку и больше ничего. Сам скрипт находится внутри страницы, которая также на русском. В самом начале соответственно страницы стоит чарсет, иначе опера страницу тоже неправильно отображает. Пишу одними и теми же буквами, так что тут даже ничего необычного. Под експлорером, под тем же нетскейпом всё порядок, под оперой страница на русском, а выдаваемая скриптом строка бегущая, как обычно каракули, будто бы не переставил чарсет.
Вот он сам скрипт

var marqueewidth=450;
var marqueeheight=15;
var marqueespeed=1;
var pauseit=1;
var marqueecontent='<nobr><DIV CLASS="NEWS";>Приветствую вас на своей странице</A></DIV></nobr>';
marqueespeed=(document.all)? marqueespeed : Math.max(1, marqueespeed-1)
var copyspeed=marqueespeed
var pausespeed=(pauseit==0)? copyspeed: 0
var iedom=document.all||document.getElementById
if (iedom)
document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px">'+marqueecontent+'</span>')
var actualwidth=''
var cross_marquee, ns_marquee

function populate(){
if (iedom){
cross_marquee=document.getElementById? document.getElementById("iemarquee") : document.all.iemarquee
cross_marquee.style.left=parseInt(marqueewidth)+8+"px"
cross_marquee.innerHTML=marqueecontent
actualwidth=document.all? temp.offsetWidth : document.getElementById("temp").offsetWidth
}
else if (document.layers){
ns_marquee=document.ns_marquee.document.ns_marquee2
ns_marquee.left=parseInt(marqueewidth)+8
ns_marquee.document.write(marqueecontent)
ns_marquee.document.close()
actualwidth=ns_marquee.document.width
}
lefttime=setInterval("scrollmarquee()",20)
}
window.onload=populate

function scrollmarquee(){
if (iedom){
if (parseInt(cross_marquee.style.left)>(actualwidth*(-1)+8))
cross_marquee.style.left=parseInt(cross_marquee.style.left)-copyspeed+"px"
else
cross_marquee.style.left=parseInt(marqueewidth)+8+"px"

}
else if (document.layers){
if (ns_marquee.left>(actualwidth*(-1)+8))
ns_marquee.left-=copyspeed
else
ns_marquee.left=parseInt(marqueewidth)+8
}
}

if (iedom||document.layers){
with (document){
document.write('<link rel="stylesheet" type="text/css" href="http://moja.stranitsa/jscss.php">');
document.write('<table border="0" cellspacing="0" cellpadding="0"><td>')
if (iedom){
write('<div style="position:relative;width:'+marqueewidth+';height:'+marqueeheight+';over flow:hidden">')
write('<div style="position:absolute;width:'+marqueewidth+';height:'+marqueeheight+'" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed">')
write('<div id="iemarquee" style="position:absolute;left:0px;top:0px"></div>')
write('</div></div>')
}
else if (document.layers){
write('<ilayer width='+marqueewidth+' height='+marqueeheight+' name="ns_marquee">')
write('<layer name="ns_marquee2" left=0 top=0 onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed"></layer>')
write('</ilayer>')
}
document.write('</td></table></HTML>')
}
}


///////////////////////////////////////////////
И содержание css должно располагаться в инете как указано
http://moja.stranitsa/jscss.php иначе не хочет использоваться,
если пытаешься с локалки грузить.

BODY {
BACKGROUND: url(back.gif) #f8f1d6;
}
.NEWS {
font-size: 10px; font-weight: normal; font-family: Verdana,Arial,Helvetica; white-space: nowrap; color: #3333CC;
}
A.LINK {
font-size: 10px; font-weight: normal; font-family: Verdana,Arial,Helvetica; text-decoration: none; color: #000000;
}
A.LINK:visited {
font-size: 10px; font-weight: normal; font-family: Verdana,Arial,Helvetica; text-decoration: none; color: #000000;
}
A.LINK:hover {
font-size: 10px; font-weight: normal; font-family: Verdana,Arial,Helvetica; text-decoration: underline; color: #DE0129;
}
/////////////////////////////////////
Вообщем я чайник и в таких делах не очень. Пытался
добавить в скрипт вот такую строку, такой же чарсет, как в начале моей страницы, но не помогло.
document.write('<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">');
document.write('<link rel="stylesheet" type="text/css" href="http://moja.stranitsa/jscss.php">');

dr-evil
05.08.2003, 23:50
ээээ
ты уверен что в теге стоит win1251 и текст win1251?

RaZEr
05.08.2003, 23:54
Opera 7.11 ... все работает нормально ...

Viroman
06.08.2003, 00:05
2 dr-evil: Я ни в чём не уверен, лучше скажи как надо.
Вот такая строка стоит у меня в начале моего хтмл документа, а как надо?
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

RaZEr
06.08.2003, 00:22
Да никак ненадо, если браузер написан нормально то, он сам определит кодировку ... у меня без мета-тегов сработало ...

PS: Да забей ты на эту Оперу ... жалкая поделка ...

Viroman
06.08.2003, 01:31
Ура нашёл ошибку, извините чайника, вообще блин не ту страницу имел ввиду. Тут моя ошибка в том, что я вывел script
в отдельный файл и дал на него ссылку. Опера их по дефолту латинским шрифтом показывает, не хочет на русском, поставил весь скрипт в саму страницу, теперь нормально.
Вот как было
<script language=Javascript src="stroka.js" type=text/javascript></script>
Вот вопрос, нельзя ли заставить Оперу открывать внешние
скрипты также с определённым чарсетом.

water
18.08.2003, 09:39
Тут моя ошибка в том, что я вывел script
в отдельный файл и дал на него ссылку. Опера их по дефолту латинским шрифтом показывает, не хочет на русском, поставил весь скрипт в саму страницу, теперь нормально.
Браузеры Netscape четвертой версии (по крайней мере до версии 4.76 включительно) страдают такой же болезнью. Стоит скрипт запихать в тело документа - все ОК. Кстати, еще заметил, что при открытии html'ок с локального диска - все нормально, а с Web-сервера - кодировка глючит.

Viroman
18.08.2003, 23:37
Как обнаружилось очень легко лечится
<SCRIPT language=JavaScript charset="windows-1251" type="text/javascript" src="script.js"></SCRIPT>