Wechat / Weixin JavaScript Bridge (WeixinJSBridge) с использованием прослушивателя событий WeixinJSBridgeReady и функции в качестве параметра

Я использую WeixinJSBridge для изменения параметров обмена, когда кто-то делится одной из моих игр (созданной с помощью JavaScript) с помощью Wechat (Weixin).

Следующий код, который находится в конце большого файла JavaScript (более 2500 строк, около 100 КБ) и вне какой-либо функции или объекта, работает как шарм, и функция WECHAT_onBridgeReady вызывается, как и ожидалось, когда WeixinJSBridge готов (используя игра в Wechat/Weixin):

if (document.addEventListener)
{
    document.addEventListener('WeixinJSBridgeReady', function() { WECHAT_onBridgeReady(); }, false);
}

Но следующий код не работает (WECHAT_onBridgeReady никогда не вызывается):

if (document.addEventListener)
{
    document.addEventListener('WeixinJSBridgeReady', WECHAT_onBridgeReady, false);
}

Я хотел бы знать, почему существует разница между передачей функции в качестве параметра (которая не работает) и передачей инкапсулированной функции, которая вызывает функцию (которая работает).

Здесь вы можете увидеть игру (сделана в 2006 году, код бестолковый и на испанском языке, но сейчас я пытаюсь модифицировать ее, чтобы улучшить и адаптировать под современные мобильные устройства): http://yasminoku.tuxfamily.org/new/online/ (файл JavaScript находится в http://yasminoku.tuxfamily.org/new/online/yasminoku.js)

Оба метода работали у меня раньше в другой предыдущей игре, но файл JavaScript был намного меньше (около 8 КБ), а код, устанавливающий прослушиватели событий, был помещен в начало этого файла. Вот почему я думаю, что эта проблема может быть связана со временем, когда файл должен быть полностью загружен и проанализирован движком JavaScript, но я не уверен.

Кто-нибудь знает причину, пожалуйста?

Заранее спасибо.

Ура, Джоан


person jalbam    schedule 15.11.2014    source источник


Ответы (1)


Я думаю, вы должны определить метод WECHAT_onBridgeReady перед скриптом document.addEventListener(...).

person Lionep    schedule 07.05.2015