Есть ли способ вызвать метод класса Javascript из ExternalInterface?

Я могу вызывать функции JS с помощью ExternalInterface.call('func_name',.args). В ПОРЯДКЕ

Но что, если вместо этого я хочу вызвать метод экземпляра класса js?

ExternalInterface.call('obj.method_name',.args) //this seems not to work

Есть ли способ сделать это?


person Luca    schedule 04.12.2010    source источник
comment
Почему бы вам не обернуть возврат класса в функцию?   -  person chchrist    schedule 04.12.2010


Ответы (2)


Это был только вопрос масштаба. Вы должны создать экземпляр объекта swf вне класса js. Затем я могу сослаться на него в ExternalInterface.call().

window.addEvent('domready',function(){

    swf = new Swiff('../files/swf/italy.swf',{
        id:'italy',
        container:'italy-flash',
        width:280,
        height:323,
        params:{
            bgcolor:'#ffffff',
            wmode:'opaque',
            allowScriptAccess:'always'
        }
    });

    rm = new RelessersManager('regions');

});

Теперь из swf я могу вызывать методы rm. :) (.call('rm.method_name',...params)) Раньше я создавал swf внутри rm, поэтому не было возможности сослаться на rm из swf.

person Luca    schedule 04.12.2010

Вы можете вызвать JavaScript-метод с помощью ExternalInterface. Убедитесь, что вы включили свои файлы JavaScript или написали свою функцию JavaScript в файле index.template.html, это может выглядеть так:

<script type="text/javascript" src="./lib/file.js"></script>
<script type="text/javascript">   
  function doSomtething() {
    alert("Something is done");
  }
</script>

Если вы хотите вызвать функцию «doSomething()», вы можете сделать это с помощью следующего кода:

ExternalInterface.call("doSomething");

Если вы хотите отправить какой-либо параметр, и ваша функция JavaScript определена следующим образом:

<script type="text/javascript">   
  function doSomtething(param1, param2) {
    alert("Something is done");
  }
</script>

Вы можете вызвать его с помощью этого оператора:

ExternalInterface.call("doSomething", param1, param2);

Если это не работает, проверьте свои функции JavaScript внутри вашего html-файла.

Вы опубликовали следующее заявление:

ExternalInterface.call('obj.method_name',.args)

Вы уверены, что хотите отправить «.args» вместо «args»?

Я надеюсь, что это поможет вам немного.

person EvilMM    schedule 04.12.2010
comment
Ммм нет, мой вопрос был другим. Во всяком случае, я решил сам. - person Luca; 04.12.2010
comment
О, извините, я неправильно понял это, но хорошо, что вы решили свою проблему. - person EvilMM; 04.12.2010