PDA

Просмотр полной версии : ExternalInterface.call ошибки


caste
23.03.2015, 20:50
Приветствую всех.

Вызываю функцию яваскрипта и передаю ей параметры , название функции тоже получаю в флеше как флеш варс. Параметры ,что перерадаются в яваскрипт функцию это Json вида
{"file":"bcac5d9ac429ad90fd99d05c5aa383c7.wav"}

В флеше вызываю функцию яваскрипта так:

var data=event.target["data"];

var fun: String = callback_after_save + "('" + data + "')";

ExternalInterface.call(fun);

В консоле фаерфокса появляется ошибка

SyntaxError: expected expression, got ')'

try { __flash__toXML(()) ; } catch (e) { "<undefined/>"; }

Функция отрабатывает верно и параметры принимает верно. Но эта ошибка возникает постоянно.
Откуда она и с чем связана? Как исправить???

caseyryan
23.03.2015, 21:02
а если туда не JSON передавать, а просто строку bcac5d9ac429ad90fd99d05c5aa383c7.wav. Ошибка тоже вываливается?
Так, чисто гипотеза, может из-за кавычек в JSON'е не правильно обрабатывается вызов

п.с. что такое callback_after_save ? Это переменная типа String?

caste
23.03.2015, 21:09
Да вот с того Jsona получаю имя файла.И отрабатывает,но в консоле фирефокса выдаёт эту ошибку.Т.е да как будто формат не нравится Jsona. Не знаю как испаравить- если бы не отрабатывала функция то было бы понятнее .

function reviewAudioAfterSave(data) {

data = JSON.parse(data);
alert(data.file);

}
Но отрабатывает и имя файла показывает.
В чём тут ошибка - не понимаю.

caseyryan
23.03.2015, 21:15
я имею в виду если из флеша не перадавать джсон, а просто вызывать так:

var data=event.target["data"];

var fun: String = callback_after_save + "('bcac5d9ac429ad90fd99d05c5aa383c7.wav')";

ExternalInterface.call(fun);


ну и в JS соответственно

function reviewAudioAfterSave(data) {

alert(data);

}

вывалится ошибка?

caste
23.03.2015, 21:20
Да переменная - название функции - получаю её как флешварс.

Добавлено через 1 минуту
Да вроде так не вываливается ошибка...так разве формат моего json не верный??

dimarik
23.03.2015, 21:40
Да вроде так не вываливается ошибка...так разве формат моего json не верный??
Плевое дело проверить (https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#newwindow=1&q=json%20validator) твой JSON.

caste
23.03.2015, 21:43
Results

Valid JSON

dimarik
23.03.2015, 21:50
Так, загуглил (http://stackoverflow.com/questions/5149387/why-does-externalinterface-breaks-when-i-pass-parameter-with-json-like-string) за пять секунд, может оно?

undefined
23.03.2015, 22:04
Так, загуглил за пять секунд, может оно?
хех, копеечный баг, но исправлять уже нельзя.Похоже, адоб сделал себя заложником своей нерасторопности)

callme
23.03.2015, 22:11
Мне кажется вы неправильно вызываете ExternalInterface.call.

Вы её так вызываете
ExternalInterface.call('jsFunc(blabla)')

а надо так
ExternalInterface.call('jsFunc', 'blabla')

Но сам не пользовался, может чушь говорю.

caste
23.03.2015, 22:17
Пробывал и так ..ох тоже начинаю думать ,что это адобовский баг .Раньше года 2 назад таких ошибок не выдавало точно....ж(

caseyryan
24.03.2015, 16:57
Раньше года 2 назад таких ошибок не выдавало точно....ж(
Может года 2 назад и отладчик в ФФ был другой ;)

caste
25.03.2015, 16:43
Ура решилось. Тупо не ту функцию менял по невнимательности. Всё работает -ошибок не выдаёт.

Всем спасибо.