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, но я не уверен.
Кто-нибудь знает причину, пожалуйста?
Заранее спасибо.
Ура, Джоан
1 ответ
Я думаю, что вы должны определить метод WECHAT_onBridgeReady
перед сценарием document.addEventListener(...)
,