PDA

Просмотр полной версии : данные из флеш в Html... непонятки...


Ices
04.07.2005, 17:29
Пытаюсь вызвать через flash javascript с предупреждением на русском языке и вылазиет набор % с кодом символа... Как сделать так чтобы вылазила нормальная строка???


on (press)
{
java = "javascript:alert('Привет');";
getURL(java);
}


Заранее спасибо за ответ.

KidsKilla
04.07.2005, 17:35
сомневаюсь, что поможет, но

my_btn.onPress = function(){
java = "javascript:alert('Привет');";
getURL(unescape(java));
}

Ices
04.07.2005, 17:39
проверил... не помогло... :(

KidsKilla
04.07.2005, 17:57
странно. у меня всё работает всегда. давай исходники.

Ices
04.07.2005, 18:20
Прикрепил.
Кстати, заметил такую вещь...
Когда запускаю просто swf файл и вызываю скрипт, то в окне браузера правильно отображается... В когда открываю через сам браузер(т.е. как и надо), то ерунда получается....

Исходник приложил...

KUZEN
04.07.2005, 18:22
всё нормально работает ...

Ices
04.07.2005, 18:30
где нормально работает??? я тестирую через оперу т.к. Ie не пользуюсь...

KidsKilla
04.07.2005, 18:34
гыгыгы =))

Ices
04.07.2005, 18:44
и что это значит???
т.е. в опере такая вещь не работает???

и вообще я думаю, что есть какой-то способ преобразовать %hh в нормальный формат...

KidsKilla
04.07.2005, 18:52
попробуй так:
<script>
function mess(){
alert('Работает!')
}
</script>


в флешке:
getURL("javascript:mess()")

Ices
04.07.2005, 19:00
@KidsKilla

Я знаю, что так будет работать... Уже пробовал...
Дело в том, что строка формируется из составляющих и передается из флеша в качестве предупреждения... Короче, я делаю форму отправки сообщения на e-mail и если какие-то поля не заполнены, то он ругается и выводит сообщение о том какое поле не заполнено. Причем все это дело может выводится как на русском так и на английском языках.
И вообще я офигеваю... Т.е. когда я буду передавать сообщение, то сам текст если он будет набран на русском тоже уйдет в ужасном виде... Или я не прав???

KidsKilla
04.07.2005, 19:06
хз.
попробуй так:

<script>
function mess(txt){
alert(txt)
}
</script>


в флешке:
getURL("javascript:mess("+txt+")")

или так:
<script>
function mess(unescape(txt)){
alert(txt)
}
</script>

или так:
<script>
function mess(unescape(unescape(txt))){
alert(txt)
}
</script>

Ices
04.07.2005, 20:30
То, что ты написал синтаксически не проглатилося...

Это пустяки...
Проглатилось это:

в флешке:
getURL("javascript:mess("+txt+")")

В html:
<script>
function mess(txt)
{
alert(txt)
}
</script>

или
<script>
function mess(txt)
{
alert(unescape(txt))
}
</script>

или
<script>
function mess(txt)
{
alert(unescape(unescape(txt)))
}
</script>


Но все равно ничего не работает.
Использовал в html также и:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

или

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />


Также игрался с:

System.useCodepage=true;

или

System.useCodepage=false;



Ничего не помогло... :(

Ices
04.07.2005, 21:38
К сожалению пришлось делать свой escaper...

Функции во флеше:

function IntToHex(a)
{
var k=a,t,i,p="";
for(i=0;i<4;i++)
{
t=k%16;
if(t<10) p=chr(48+t)+p; else p=chr(55+t)+p;
k=int(k/16)
}
return "%u"+p;
}
function MyEscape(tText)
{
var p:String=tText,k:String="";
var i;
for(i=0;i<p.length;i++)
{
k+=(p.charCodeAt(i)<128 ? p.charAt(i):IntToHex(p.charCodeAt(i)));
}
return k;
}


Вызов во флеше:

on (press)
{
System.useCodepage=true;
java = "javascript:FJ('Привет');";
java=MyEscape(java);
getURL(java);
}


В html:

<SCRIPT LANGUAGE="JavaScript">
function FJ(tText) {
alert("Пришло сообщение: "+unescape(tText));
}
</SCRIPT>


Вроде работает... А "вроде" потому что я не знаю предела, перейдя через который нужно преобразовывать в код... Я взял за предел 128...

Посмотрите пожалуйста на код... Может быть его можно оптимизировать, а то преобразование в HEX формат вручную(хотя и программно) - это круто и тормознуто...

KidsKilla
04.07.2005, 22:42
ну ващет во флэше есть функция escape...
хотя морочиться с этим из-за тупой оперы я бы вряд ли стал =/

Ices
05.07.2005, 10:45
Я знаю, что есть такая функция, но она в данном случае немного по другому кодирует.

Например, буква "П"...
escape("П"); в html - %u041F
escape("П"); в flash - %CF

Просто не хочется чтобы только в IE работало... Добиваюсь универсальности...

justin_g
12.08.2005, 20:11
странно, у меня в восьмой опере всё нормально пашет..
у меня вообще обратная ситуация:

в теле html есть таблица с id=object

пишу на кнопке

on (press)
{
java = "javascript:object.style.backgroundImage = 'url(back.gif)';";
getURL(unescape(java));
}

в опере всё нормально пашет (у таблицы появляется фон), а в ie и firefox в адресной строке появляется "javascript:object.style.backgroundImage%20=%20'url(back.gif)';", переходит и на пустой странице пишет "url(back.gif)" :(

iNils
12.08.2005, 21:29
"javascript:object.style.backgroundImage%20=%20'url (back.gif)';void();"

justin_g
12.08.2005, 23:43
страница не обновляется, но и задний фон не появляется. Может, в данном случае адрес "object.style..." не прокатывает и нужно добавлять что-то перед object? или стили просто так не передаются?
если делать через функцию, то всё работает.
вот, выкладываю исходник...

justin_g
18.08.2005, 02:25
неужели безвыходная ситуация?.. :(

megasmall
18.08.2005, 02:49
да я тоже оперой пользуюсь(v 8.1)... в ней пожизни с кодировкой проблема