我用的是swfobject + jquery来实现js和as3的交互,已经设置了allowScriptAccess 属性为always,但是flash中还是提示SecurityError: Error #2060....我很郁闷.....本人刚开始研究这东西....希望各位高人为小弟指点一下....不胜感激!
页面代码-------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" language="javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript" language="javascript" src="jquery.swfobject.js"></script>
<title>ExternalInterfaceExample</title>
<script language="JavaScript">
var jsReady = false;
function isReady() {
return jsReady;
}
window.onload = function(){jsReady = true;}
</script>
</head>
<body>
<div id="externalSWF"></div>
<script type="text/javascript" language="javascript">
$(document).ready(function(){
$('#externalSWF').flash({
swf: 'chatTest.swf',
width: 800,
height: 400,
params: {
play: true,
wmode: "transparent",
allowScriptAccess: "always"
}
});
});
</script>
</body>
</html>
AS代码-------------------------------------------------------------------------
import flash.external.ExternalInterface;setTimeout(checkJS,100);
incomingChat_txt.text+="initializing...\n";function checkJS(){
incomingChat_txt.text+="checkJS...\n";
if(checkJS_Ready()){
incomingChat_txt.text="Javascript Ready!";
}else{
incomingChat_txt.text+="Not Ready\n";
setTimeout(checkJS,100);
}
}function checkJS_Ready(){
incomingChat_txt.text+="checkJS_Ready...\n";
incomingChat_txt.text+=ExternalInterface.available+"\n";
if(ExternalInterface.available){
incomingChat_txt.text+="ExternalInterface.call before...\n";
try {
ExternalInterface.call("isReady");
} catch(e:Error) {
incomingChat_txt.text+=e;
}
var b:Boolean=ExternalInterface.call("isReady");
incomingChat_txt.text+="ExternalInterface.call after...\n";
return b;
}else{
incomingChat_txt.text+="ExternalInterface is not available.\n";
}
}
显示结果-------------------------------------------------------------------------
initializing...
checkJS...
checkJS_Ready...
true
ExternalInterface.call before...
SecurityError: Error #2060
页面代码-------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" language="javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript" language="javascript" src="jquery.swfobject.js"></script>
<title>ExternalInterfaceExample</title>
<script language="JavaScript">
var jsReady = false;
function isReady() {
return jsReady;
}
window.onload = function(){jsReady = true;}
</script>
</head>
<body>
<div id="externalSWF"></div>
<script type="text/javascript" language="javascript">
$(document).ready(function(){
$('#externalSWF').flash({
swf: 'chatTest.swf',
width: 800,
height: 400,
params: {
play: true,
wmode: "transparent",
allowScriptAccess: "always"
}
});
});
</script>
</body>
</html>
AS代码-------------------------------------------------------------------------
import flash.external.ExternalInterface;setTimeout(checkJS,100);
incomingChat_txt.text+="initializing...\n";function checkJS(){
incomingChat_txt.text+="checkJS...\n";
if(checkJS_Ready()){
incomingChat_txt.text="Javascript Ready!";
}else{
incomingChat_txt.text+="Not Ready\n";
setTimeout(checkJS,100);
}
}function checkJS_Ready(){
incomingChat_txt.text+="checkJS_Ready...\n";
incomingChat_txt.text+=ExternalInterface.available+"\n";
if(ExternalInterface.available){
incomingChat_txt.text+="ExternalInterface.call before...\n";
try {
ExternalInterface.call("isReady");
} catch(e:Error) {
incomingChat_txt.text+=e;
}
var b:Boolean=ExternalInterface.call("isReady");
incomingChat_txt.text+="ExternalInterface.call after...\n";
return b;
}else{
incomingChat_txt.text+="ExternalInterface is not available.\n";
}
}
显示结果-------------------------------------------------------------------------
initializing...
checkJS...
checkJS_Ready...
true
ExternalInterface.call before...
SecurityError: Error #2060
解决方案 »
- ext修改grid表格单元格后,将数据库里面的数据进行修改
- 关于EXT的问题
- ajax 没中显示 not found! 请求帮助!!!
- 大家帮看一下这句js哪里语法错了?
- 哪位亲有JS版的 slider控件啊 (滑动条)
- 分享获取网站访问者qq方法
- frameset的菜单问题??在线等!
- left,pixelLeft,posLeft属性的问题,高手进来答疑,给高分!!!!!!
- 请问高手:如何用JS判断一个DIV图层下是否有其它页面内容?
- 我按照说明把代码加到body中,可是在frontpage就是预揽不出他的特效啊
- ■■投票程序中好几组单选框的有选择全选问题
- 关于My97 DatePicker实现的问题
as 3 与javascript 安全机制var readyTimer;
function registerJsFun() {
if (ExternalInterface.available) {
try {
var containerReady:Boolean = isContainerReady();
if (containerReady) {
setupCallBacks();
} else {
readyTimer = setInterval(timeHandler, 100);
}
} catch (error:Error) {
trace(error);
}
} else {
trace("External interface is not available for this container.");
}
}
function timeHandler() {
var isReady:Boolean = isContainerReady();
if (isReady) {
//如果全部加载完,则删除循环事件,暴露方法
setupCallBacks();
clearInterval(readyTimer);
}
}
//swf call js function
function isContainerReady():Boolean {
var _result:Boolean = Boolean(ExternalInterface.call("isReady"));
return _result;
}
//暴露SWF方法
function setupCallBacks() {
ExternalInterface.call("setSwfIsReady");
ExternalInterface.addCallback("connects",connects);
ExternalInterface.addCallback("sendMessage",sendMessage);
ExternalInterface.addCallback("sendSingleMessage",sendSingleMessage);
}
registerJsFun();
var jsReady = false;
//swf循环call此方法 直到范围true
var isReady = function() {
return jsReady ;
}
//swf 准备好 call js function 再连接swf方法
var setSwfIsReady = function() {
$('#server').get(0).connects($.cookie('name'));//如何发生JS错误可以alert($('#server').get(0).connects)看是否是null
}
//window.onload function
$(function(){
jsReady = true;
});
到了isContainerReady()方法里面的ExternalInterface.call("isReady")就不行了~
try catch 一下还是SecurityError: Error #2060...