views:

681

answers:

1

i use FBML for the FB application

I have a flash and the flash suppose to call a javascript on the page. I read so many websites trying to figure it out but still having problem.

Here is the Webpage with the javascript:

<fb:fbjs_bridge/>
<div id="swfContainer"></div>
<script>
// the javascript to call and change the text of ztest001
function callmenow(a) {
    var obj = document.getElementById("ztest001");
    obj.setTextValue("Calling");
}

// generating the SWF 
var swf = document.createElement('fb:swf');
swf.setId('my_swf_id');
swf.setWidth('630');
swf.setHeight('520');
swf.setSWFSrc('http://hollywood-life.madscience-games.com/ztest/test1.swf'); 
document.getElementById('swfContainer').appendChild(swf);



</script>


<div onclick="callmenow('a')">call me now</div>
<div id="ztest001">           YOo      </div>

And here it is the Flash code. (one frame. code is on the frame. with a text box "myvar1")

var connection:LocalConnection = new LocalConnection();
var connectionName:String = LoaderInfo(this.root.loaderInfo).parameters.fb_local_connection;
connection.allowDomain("apps.facebook.com", "apps.*.facebook.com");


function callFBJS():void{
    myvar1.text = "START";  // debugging purpose
    if (connectionName) {
        myvar1.text = "Connection now";  // debugging purpose
        var pArray = ['bs'];
        connection.send(connectionName, "callmenow", "callmenow", pArray);
        myvar1.text = "SENT";
    }
}

callFBJS();

Well, when i test, the flash loaded. The code goes through everything and show "SENT" in the flash text box. However, it doesn't seem like it is calling the javascript and change the text in the HTML page.

is there something wrong I did? i try the ExternalInteface.call method but doesn't work neither.

ALSO, when i run it in FireFox, not error popup. however, when i run it in IE, I got this:

VerifyError: Error #1033: Cpool entry 36 is wrong type.

ReferenceError: Error #1065: Variable FBJS is not defined.
+1  A: 

Did you try changing:

connection.send(connectionName, "callmenow", "callmenow", pArray);

to

connection.send(connectionName, "callFBJS", "callmenow", pArray);
Timmy
it works now. Thanks.
Murvinlai