Nothing is ever as easy as it should be, no? :) Hmm... perhaps focus will only work when the SWF has completed loading, which may be why your ExternalInterface and body onload approaches both work. If that's the case, you could still set focus using the callback, but it gets a bit more complicated. You could use a timer as described here<http://learnswfobject.com/advanced-topics/executing-javascript-when-the-swf-has-finished-loading/>.
Probably simpler to use static publishing with an swfobject.addLoadEvent call, though. I think I'll make some test pages for this when I can find time... On Mon, Nov 7, 2011 at 10:46 AM, Aran Rhee <aran.r...@gmail.com> wrote: > @Philip. > > Thanks for your input / background articles. > > Unfortunately in my own recent findings, using the callback function > provided by SWFObject still fails to focus the element correctly in a bunch > of browsers (my hypothesis is that it is still too early to be able to > focus correctly) > > I agree that this would have been a really nice clean way to make it > happen (if it had worked) > > > A > > > > On Mon, Nov 7, 2011 at 12:19 PM, Philip Hutchison <platelu...@gmail.com>wrote: > >> Traditionally, only links and form controls can receive focus. Since >> <object> is not a link or form element, it isn't capable of receiving focus >> in most browsers unless you set its tabIndex property. >> >> Jonathan Snook wrote a nice overview about focus and tabIndex a while >> back: >> >> http://snook.ca/archives/accessibility_and_usability/elements_focusable_with_tabindex >> >> The MDN has a good overview of the topic as well: >> >> https://developer.mozilla.org/en/Accessibility/Keyboard-navigable_JavaScript_widgets >> >> W3C's word on the topic (as relates to ARIA): >> http://www.w3.org/WAI/PF/aria-implementation/#keyboard-focus_tabindex >> >> As far as it relates to SWFObject, I'd invoke focus() using SWFObject's >> callback function since it doesn't involve editing the SWF: >> >> >> <script type="text/javascript"> >> var flashvars = {}; >> var params = { menu: false, salign: "tl", bgcolor: "#F7ECDA" }; >> var attributes = { id: "swfContent" }; >> var callbackFn = function(e){ >> if(e.success){ >> e.ref.tabIndex = "-1"; >> e.ref.focus(); >> } >> }; >> >> swfobject.embedSWF("VendMach.swf", "flashDiv", "1152", "864", >> "9.0.0", "expressInstall.swf", flashvars, params, attributes, callbackFn); >> </script> >> >> >> By the way, setting params.quality = "best" is not necessary -- "best" is >> Flash's default setting. >> >> >> - philip >> >> >> >> >> On Mon, Nov 7, 2011 at 10:02 AM, Aran Rhee <aran.r...@gmail.com> wrote: >> >>> @Alex - Using the ExternalInterface methodology of calling focus from >>> within the swf after it is rendered etc (as described in my first response) >>> worked in all recent versions of FF/Safari/IE/Chrome/Opera that I tested. >>> >>> Setting the tab index seemed to fix the focus issue on some versions. >>> >>> In my situation, I needed not only to focus the swf on page load (kiosk >>> app driven by keyboard / remote control), but needed to be able to defocus >>> the Flash so the swap browser tab shortcut worked on FF as well... It was >>> pretty annoying to get working, but boiled down to some pretty simple >>> functions in the end... >>> >>> >>> Cheers, >>> Aran >>> >>> >>> >>> >>> On Mon, Nov 7, 2011 at 11:54 AM, Alex Harui <aha...@adobe.com> wrote: >>> >>>> Which browser and version of the browser? I am under the impression >>>> that >>>> the focus() call doesn't work on all browsers. >>>> >>>> >>>> On 11/7/11 9:33 AM, "tidybox" <tidy...@hotmail.co.uk> wrote: >>>> >>>> > Thanks for the quick response and I have tried both your suggestions >>>> > but still not working! >>>> > I'm not the best at coding and my original code doesn't seem to >>>> > reflect your suggestions so maybe I'm altering it incorrectly (I used >>>> > the air swfObject2 generator)! >>>> > Here is my HTML code before adding any of your stuff and maybe you can >>>> > point me in the right direction as to where to place the new code. >>>> > >>>> > Much appreciated >>>> > >>>> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// >>>> > www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> >>>> > <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> >>>> > <head> >>>> > <title>Portfolio</title> >>>> > <meta http-equiv="Content-Type" content="text/html; >>>> > charset=ISO-8859-1" /> >>>> > <script type="text/javascript" src="swfobject.js"></script> >>>> > <script type="text/javascript"> >>>> > var flashvars = {}; >>>> > var params = {}; >>>> > params.menu = "false"; >>>> > params.quality = "best"; >>>> > params.salign = "tl"; >>>> > params.bgcolor = "#F7ECDA"; >>>> > var attributes = {}; >>>> > attributes.id = "swfContent"; >>>> > swfobject.embedSWF("VendMach.swf", "flashDiv", "1152", "864", >>>> > "9.0.0", "expressInstall.swf", flashvars, params, attributes); >>>> > </script> >>>> > <style type="text/css" media="screen"> >>>> > object { outline:none; } >>>> > <!-- >>>> > body { >>>> > background-color: #F7ECDA; >>>> > margin-left: 0px; >>>> > margin-top: 0px; >>>> > margin-right: 0px; >>>> > margin-bottom: 0px; >>>> > } >>>> > --> >>>> > </style> >>>> > <meta name="Keywords" content="Graphic Designer, Graphic Design, >>>> > Photoshop, illustrator, animation, print work, design, inDesign, >>>> > freelance" /> >>>> > <meta name="Description" content="MyPortfolio, freelance graphic >>>> > designer" /> >>>> > </head> >>>> > <body> >>>> > <div id="flashDiv"> >>>> > <a href="http://www.adobe.com/go/getflashplayer"> >>>> > <img src="http://www.adobe.com/images/shared/download_buttons/ >>>> > get_flash_player.gif" alt="Get Adobe Flash player" /> >>>> > </a> >>>> > </div> >>>> > </body> >>>> > </html> >>>> > >>>> > ____________________________________________________________________ >>>> > >>>> > On Nov 7, 4:20 pm, Aran Rhee <aran.r...@gmail.com> wrote: >>>> >> Have a read of my reply to this question in this thread: >>>> >> >>>> >> >>>> http://groups.google.com/group/swfobject/msg/b0dc02d06db7aa43?hl=en_US >>>> >> >>>> >> That in my opinion is the correct way to do it (as you can ensure >>>> the focus >>>> >> (and defocus) calls work as intended) >>>> >> >>>> >> A simpler way which works in *most* browsers is to call a function >>>> on page >>>> >> load. Set the name and id in your attributes object for your >>>> embedSWF() >>>> >> call, and then call the focus method once all the page content had >>>> loaded. >>>> >> >>>> >> <head> >>>> >> <script type="text/javascript"> >>>> >> function setFocus() >>>> >> { >>>> >> document.getElementById('myflashid').focus();} >>>> >> >>>> >> </script> >>>> >> ... >>>> >> </head> >>>> >> >>>> >> <body onLoad="setFocus();"> >>>> >> >>>> >> Aran >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> On Mon, Nov 7, 2011 at 10:09 AM, tidybox <tidy...@hotmail.co.uk> >>>> wrote: >>>> >>> I have an HTML page with only a single flash object on it which is >>>> >>> embedded using the 2.1 swfObject "Dynamic" generator and I want to >>>> be >>>> >>> able to use the keyboard straight away without the user first having >>>> >>> to click on the flash movie first! Can anyone advise me what code I >>>> >>> should use and where should it be placed in the generated HTML?? >>>> >> >>>> >>> Thanks >>>> >> >>>> >>> -- >>>> >>> You received this message because you are subscribed to the Google >>>> Groups >>>> >>> "SWFObject" group. >>>> >>> To post to this group, send email to swfobject@googlegroups.com. >>>> >>> To unsubscribe from this group, send email to >>>> >>> swfobject+unsubscr...@googlegroups.com. >>>> >>> For more options, visit this group at >>>> >>> http://groups.google.com/group/swfobject?hl=en. >>>> >>>> -- >>>> Alex Harui >>>> Flex SDK Team >>>> Adobe System, Inc. >>>> http://blogs.adobe.com/aharui >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "SWFObject" group. >>>> To post to this group, send email to swfobject@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> swfobject+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/swfobject?hl=en. >>>> >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "SWFObject" group. >>> To post to this group, send email to swfobject@googlegroups.com. >>> To unsubscribe from this group, send email to >>> swfobject+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/swfobject?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "SWFObject" group. >> To post to this group, send email to swfobject@googlegroups.com. >> To unsubscribe from this group, send email to >> swfobject+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/swfobject?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "SWFObject" group. > To post to this group, send email to swfobject@googlegroups.com. > To unsubscribe from this group, send email to > swfobject+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/swfobject?hl=en. > -- You received this message because you are subscribed to the Google Groups "SWFObject" group. To post to this group, send email to swfobject@googlegroups.com. To unsubscribe from this group, send email to swfobject+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/swfobject?hl=en.