2010-03-16 4 views
0

Все, что я хочу, это передать HTML (объект DOM) из javascript в ActionScript.Пропустить HTML-DOM в ActionScript

я увидел this article on the net и попробовал аналогичный код. Но когда я запускаю код в IE, он предупреждает: «Недостаточно памяти в строке 18». Я застрял здесь со вчерашнего дня.

я выложу MXML и HTML здесь ..

MXML:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> 
    <mx:Script> 
     <![CDATA[ 

      public function init() : void 
      { 
       if (ExternalInterface.available) 
       { 
        try { 
         ExternalInterface.addCallback("populateFlashFile", populateFlashFile); 
        } catch (error:SecurityError) {      
        } catch (error:Error) { 
        } 
       } 
      } 
      public function populateFlashFile(window:*) : void 
      { 
       log.text = window.toString(); // just for checking if window has come to the function. 
       window.document.write("Hello"); 
      } 
      ]]> 
      </mx:Script> 
    <mx:TextArea x="10" y="23" width="712" height="581" id="log"/> 
</mx:Application> 

HTML-:

<html lang="en"> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 

<body scroll="no"> 

<input type="button" onclick="document.getElementById('Test').populateFlashFile(window);"/> 

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
      id="Test" width="100%" height="100%" 
      codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> 
      <param name="movie" value="Test.swf" /> 
      <param name="quality" value="high" /> 
      <param name="bgcolor" value="#869ca7" /> 
      <param name="allowScriptAccess" value="sameDomain" /> 
    </object> 
</body> 
</html> 

Проблема occors только тогда, когда я передать некоторые DOM объект, если я передаю некоторую строку, это сработает. !!! i.e:
<input type="button" onclick="document.getElementById('Test').populateFlashFile('some text here');"/>
отлично работает!

+0

или, если существует какая-либо другая альтернатива для передачи DOM с js на, пожалуйста, предложите. – raj

ответ

0

то, что вы пытаетесь сделать, возможно только с AIR. если вы пересмотрите ссылку, которую вы опубликовали, вы должны увидеть. Это потому, что AIR работает как AS, так и JS на включенном Tamarin.

Насколько я знаю, вы можете передавать примитивные значения только между JS и AS, в обоих направлениях. Может быть, массивы и анонимные объекты, но я бы не стал на это полагаться.

однако, вы можете inject arbitrary JS into the containing HTML.

+0

Очень круто! ссылка u дала - http://www.actionscript.org/resources/articles/745/3/JavaScript-and-VBScript-Injection-in-ActionScript-3/Page3.html решила мою проблему .. Спасибо :) – raj

Смежные вопросы