AS3 navigateToURL();使用jQuery时javascript函数没有触发

时间:2011-07-07 14:24:53

标签: javascript jquery actionscript-3 dom

我有一个我似乎无法解决的问题。我正在使用AS3的navigateToURL();函数调用一个简单的javascript函数。目前它只是警告第一个参数。问题是,当此函数放在$(document).ready(function(){..})块内时,它不会触发。我的代码示例:

<script type="text/javascript">
  $(document).ready(function(){
    function mapLink(aVar){
      alert(aVar);
    };
  });
</script>

简单AS3调用函数的示例:

navigateToURL(new URLRequest('Javascript: mapLink("'+mapObject.tooltipMoreLink+'");'), '_self');

当函数放在jquery代码的OUTSIDE时,它工作正常。为什么它需要在你可能会问的jquery代码中?我需要jQuery DOM选择器根据我的javascript函数中'aVar'的值来操作某些dom元素。

以开放的态度欢迎任何指导。

2 个答案:

答案 0 :(得分:2)

它无效,因为您在DOMReady Event中创建了一个函数 这是$(document).ready并从函数范围之外调用它。

如果您在页面中引用了jQuery.js,则可以从任何地方访问jQuery DOM选择器。

实施例

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script type="text/javascript">
    function mapLink(aVar){
      alert(aVar);
    }
</script>

答案 1 :(得分:2)

诶。这就是ExternalInterface类的设计目标。

您的问题与范围有关。您的函数的作用域是jquery对象,而不是全局,因此它对您的调用是不可见的。如果你需要jquery选择器,那么你可以很容易地单独设置flash var,然后是jquery例程。

<强>更新

也许我错过了一些东西,但这不应该像以下那样简单:

function externalCall(param){

     $(domElement).doSomething(param);

}

我不认为这需要与jq ready功能相关联。我的意思是,如果flash已经加载,并且用户正在进行交互,那么当然就绪事件早已成功解雇。

希望有所帮助。我不确定我是否正在按照你的意思去做;)

... 顺便说一句 - 我真的会调查ExternalInterface,NavToURL可能会工作,但您可以使用前一种方法直接调用您的js。