У меня есть веб-сайт asp.net, где у меня есть встроенный флеш-объект. У объекта Flash есть некоторые функции, зарегистрированные через ExternalInterface, поэтому он должен быть доступен из JavaScript. И они есть, но только когда я вызываю его, когда сайт полностью загружен и я запускаю некоторые события (щелчок и т. Д.). Но когда я пытаюсь получить доступ к любой из этой функции из блока сценария, у меня появляется ошибка, заключающаяся в том, что я вызываю недостаточную функцию.

Этот скрипт помещен в конец документа, на данный момент объект flashGame не недоопределен, но его функции недоопределены.

<script type="text/javascript">
            var flashObj = document.getElementById("flashGame");
            // AdLoaded is underfined at this moment. 
            flashObj.AdLoaded();
            // Also tried this, no luck
            $(document).ready(function () {
                flashObj.AdLoaded();
            });  
</script>

AdLoaded не определен в обоих случаях. P.S. И если я помещаю точку останова в начале скрипта, кажется, все работает нормально, функция AdLoaded () не недооценена. Что я скучаю? Заранее спасибо.

0
igorGIS 23 Май 2013 в 14:04

1 ответ

Лучший ответ

У вас есть блок ready, но элемент еще не в теле, поэтому getElementById, скорее всего, вернет null,

Пытаться:

$(document).ready(function () {
    var flashObj = document.getElementById("flashGame");  
    flashObj.AdLoaded();
});  

Обратите внимание, что document.ready не означает, что флеш-память завершила загрузку, просто DOM готова, поэтому вам, возможно, придется даже сделать:

$(window).on("load",function () {
    var flashObj = document.getElementById("flashGame");
    flashObj.AdLoaded();
});  
1
Benjamin Gruenbaum 23 Май 2013 в 14:07
1
Действительно, я понял, в чем проблема, поэтому, когда flash-объект в DOM готов, но его внешний интерфейс еще не инициализирован, поэтому я получаю неопределенное значение. Спасибо, Бенджамин!
 – 
igorGIS
23 Май 2013 в 14:23