Просмотр полной версии : данные из флеш в Html... непонятки...
Пытаюсь вызвать через 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));
}
проверил... не помогло... :(
KidsKilla
04.07.2005, 17:57
странно. у меня всё работает всегда. давай исходники.
Прикрепил.
Кстати, заметил такую вещь...
Когда запускаю просто swf файл и вызываю скрипт, то в окне браузера правильно отображается... В когда открываю через сам браузер(т.е. как и надо), то ерунда получается....
Исходник приложил...
всё нормально работает ...
где нормально работает??? я тестирую через оперу т.к. Ie не пользуюсь...
KidsKilla
04.07.2005, 18:34
гыгыгы =))
и что это значит???
т.е. в опере такая вещь не работает???
и вообще я думаю, что есть какой-то способ преобразовать %hh в нормальный формат...
KidsKilla
04.07.2005, 18:52
попробуй так:
<script>
function mess(){
alert('Работает!')
}
</script>
в флешке:
getURL("javascript:mess()")
@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>
То, что ты написал синтаксически не проглатилося...
Это пустяки...
Проглатилось это:
в флешке:
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;
Ничего не помогло... :(
К сожалению пришлось делать свой 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...
хотя морочиться с этим из-за тупой оперы я бы вряд ли стал =/
Я знаю, что есть такая функция, но она в данном случае немного по другому кодирует.
Например, буква "П"...
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)" :(
"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)... в ней пожизни с кодировкой проблема
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.