如何将值从 javascript 传递到嵌入式 flex 对象?

Posted

技术标签:

【中文标题】如何将值从 javascript 传递到嵌入式 flex 对象?【英文标题】:how to pass value from java script to embedded flex object? 【发布时间】:2011-06-30 09:31:18 【问题描述】:

我试图弄清楚如何将字符串值(url)从 html 表单传递到嵌入的 flex 对象。 到目前为止我发现的唯一方法是http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_5.html 中描述的“addCallback”方法 在示例中,我使用了 flex 函数“myFunc(s:String)”注册到“ExternalInterface”并稍后从 javascript 调用

--->mySwf.mxml:

<?xml version="1.0"?>
<!-- wrapper/AddCallbackExample.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()">
  <mx:Script>
     import flash.external.*;
      import mx.controls.Alert;
     public function initApp():void 
        ExternalInterface.addCallback("myFlexFunction",myFunc);
       
     public function myFunc(s:String):void 

         Alert.show(s, 'Alert Box', mx.controls.Alert.OK);
     

  </mx:Script>
  <mx:Button id="myButton" 
        label="FLEX BUTTON" 
        click="Alert.show('FLEX LOADED!', 'Alert Box', mx.controls.Alert.OK);"/>
  <mx:Label id="l1"/>

</mx:Application>

external.html

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<SCRIPT LANGUAGE="JavaScript">
    function callApp() 

        mySwf.myFlexFunction("show me something");
    
</SCRIPT>


<form id="f1">
    <button onClick="callApp()">HTML BUTTON</button>
</form>

<OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
WIDTH="850"
HEIGHT="610"
CODEBASE="http://active.macromedia.com/flash5/cabs/swflash.cab#version=5,0,0,0">
<EMBED SRC="mySwf.swf"
WIDTH="850"
HEIGHT="610"
PLAY="true" 
LOOP="true"
QUALITY="high" 
scale="noborder"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"> 
</EMBED>
</OBJECT>
</html>

该方法似乎根本不起作用。如果我按下 Flex 按钮 - 我可以看到 Flex 弹出对话框。当我按下 HTML 按钮时,通过 ExternalInterface 在 Flex 中调用 myFunc - 什么都没有 发生...我的代码中有任何指向错误的指针吗? 谢谢,

【问题讨论】:

您应该始终将代码格式化为代码,尤其是因为 XML 标记不会以其他方式显示。使用 按钮或缩进 4 个空格。这次我为你做了。 你在哪个浏览器上测试它? 【参考方案1】:

如果您没有使用正确的浏览器,请尝试以下操作:

<SCRIPT LANGUAGE="JavaScript">
    // This function returns the appropriate reference, 
    // depending on the browser.
    function getFlexApp(appName)
    
      if (navigator.appName.indexOf ("Microsoft") !=-1)
      
        return window[appName];
       
      else 
      
        return document[appName];
      
    

    function callApp() 
        getFlexApp('mySwf').myFunc("show me something");
    

</SCRIPT>

你也没有给你的对象一个 id 这是 DOM 识别的方式

<OBJECT id='mySwf' CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">

试试这个:

ExternalInterface.addCallback("myFunc",myFunc);

【讨论】:

请看答案。您没有在对象上附加 id='mySwf' 尝试了您建议的所有方法 - 到目前为止没有任何区别。 你能建议其他方法吗(将 arg 从 html 传递给 flex)? 试试看能不能设置这个教程switchonthecode.com/tutorials/… 来自错误控制台:错误:getFlexApp("mySwf").myFlexFunction 不是函数

以上是关于如何将值从 javascript 传递到嵌入式 flex 对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从 javascript 传递到 iOS UIWebView

如何将值从javascript传递到iOS UIWebView

如何使用 JavaScript 将值从一个 HTML 页面传递到另一个页面?

如何将值从javascript变量传递给剃刀变量?

通过使用 java 脚本,我如何将值从一个 html 页面传递到另一个 html 页面? [复制]

将值从 iOS 传递到 uiWebView