Hi all,

 I have been experimenting with embedded flash objects to see what the
possibilities are for a hypothetical flash-mode for conkeror.  I know
this is a topic of interest for some people, so I thought I would post a
repl session showing the basics of the standard flash plugin api.  I am
using the MozRepl extension to do this experimentation, where "repl>" is
the MozRepl prompt.

Step 1: browse to http://homestarrunner.com/ in conkeror
Step 2: connect to conkeror with MozRepl

=== begin paste ===
repl> repl.enter(conkeror)
[object Object] — {XPCOMUtils: {…}, wrappedJSObject: {…},
                    conkeror: {…}, loaded_modules: {…},
                    loading_modules: {…},
                    module_after_load_functions: {…},
                    pending_loads: {…}, ...}
repl> w = window_watcher.activeWindow
[object ChromeWindow] — {repl: undefined,
                          minibuffer_input_mode_indicator: {…},
                          current_buffer_input_mode_change_hook: {…},
                          minibuffer_mode_indicator: {…},
                          current_buffer_mode_change_hook: {…},
                          keyboard: {…},
                          buffer_dom_content_loaded_hook: {…}, ...}
repl> w.navigator.mimeTypes["application/x-shockwave-flash"]
[object MimeType] — {description: "Shockwave Flash", enabledPlugin: {…},
                      suffixes: "swf", type: "application/x-shockwave-flash"}
repl> b = w.buffers.current
[object Object] — {constructors_running: 0, window: {…}, configuration: {…},
                    element: {…}, browser: {…}, enabled_modes: {…},
                    local_variables: {…}, ...}
repl> b.document.embeds.length
repl> b.document.embeds[0].src
repl> b.document.embeds[1].src
repl> e = b.document.embeds[0]
function() {…}
repl> e.Rewind()
repl> e.LoadMovie(0,"http://homestarrunner.com/sbemail195.swf";)
repl> e.PercentLoaded()
repl> e.PercentLoaded()
repl> e.PercentLoaded()
repl> e.TotalFrames()
repl> e.TCurrentFrame("/")
repl> e.StopPlay()
repl> e.TCurrentFrame("/")
repl> e.Play()
repl> e.IsPlaying()
repl> e.TCurrentFrame("/")
repl> e.GotoFrame("500")
repl> e.Play()
repl> e.GetVariable("$version")
"LNX 9,0,31,0"
repl> e.StopPlay()

=== end paste ===

  Everything here is standard and should work with any basic flash
embed.  However, this is *not* the way to programmatically control
embedded video players like youtube-player.  Those are not so trivial
because movie-playback is controlled by internal logic of the player
program, rather than by the flash api.  I have experimented a bit with
youtube-player and I would be happy to share what I have learned if
people are interested.  It does not seem like full control over movie
playback is possible, but it is a very complex program so I could have
missed something.

  I will end this post with a question.  I posted yesterday about a
method to regain focus from a flash plugin.  Now can anybody figure out
how to focus a flash plugin without using the mouse?

John Foerch

Conkeror mailing list

Reply via email to