[SWFObject] swfobject_jskit only works in FF on reload
David Waclo
oakiedave at hotmail.com
Tue Oct 31 09:31:26 PST 2006
Hello,
I'm not sure if the problem I'm having is with how I'm using the the
swfobject_jskit or with the way I have my javascript written:
http://wolfsmithmedia.com/TestDave/webN.php
The green box should display the width of the of the page. It works fine
in IE on windows, but on FireFox in Windows it usually doesn't work. If I
reload the page several times, it eventually will work. On Firefox for a
Mac, it doesn't work the first time, but always works if I reload the page.
The only thing I can think is that its some kind of timing thing with the
order the files are loaded.
The width of the window is read by the javascript and sent to the swf via
the swfobject gateway when the window is resized. That width is then
displayed with the displayData function in the swf exactly as in Geoff's
example in the kit.
Any help would be greatly appreciated as I've already spent a lot of time
trying to figure this out. I also realize I could use the External Interface
in Flash 8, but we're trying to avoid forcing people to upgrade.
Here is the javascript:
<script language="JavaScript">
// tells function to do only once for IE and Opera
var doneYet = false;
// event occurs when window is resized
window.onresize = resizer;
// IE, Opera, Safari trip onresize continuously as mouse is pressed, so
function is set to do once a second
function resizer() {
if (!doneYet) {
setTimeout('doOnce()', 1000);
doneYet = true;
}
}
function doOnce() {
sendSwf();
doneYet = false;
}
var winW = 630, winH = 460;
// gets width and height of window: IE uses document.etc while opera, FF
use window.etc
function winDim() {
if (parseInt(navigator.appVersion)>3) {
if (navigator.appName.indexOf("Microsoft")!=-1) {
winW = document.body.offsetWidth - 20 ;
winH = document.body.offsetHeight - 20;
} else {
winW = window.innerWidth - 16;
winH = window.innerHeight - 16;
}
}
}
// gets dimensions for initial loading of swf.
winDim();
// uses gateway to send winW to functions in the swf
function sendSwf() {
winDim();
swf.call('displayData', winW);
swf.call('getWidths', winW);
}
</script>
<div align="center" id="flashcontent">
Flash here
</div>
<script type="text/javascript">
var swf = new SWFObject("webN.swf", "jsdisplay", "2000", "116", "6.0.65",
"#ffffff");
swf.setProxy(null, 'swfobject_js_gateway.swf');
swf.addParam("quality", "high");
swf.addParam("wmode", "transparent");
// --> here I add a bunch of variables using swf.addVariable
swf.write("flashcontent");
sendSwf();
</script>
_________________________________________________________________
Stay in touch with old friends and meet new ones with Windows Live Spaces
http://clk.atdmt.com/MSN/go/msnnkwsp0070000001msn/direct/01/?href=http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
More information about the Swfobject
mailing list