我有一个我似乎无法解决的问题。我正在使用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元素。
以开放的态度欢迎任何指导。
答案 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。