#74 new
Elia Schito

Quicktime object grabs input when calling Sound.play()

Reported by Elia Schito | August 21st, 2008 @ 05:30 PM

In Firefox (not sure about IE) if an asynchronous event starts a sound (e.g. an alarm) the keyboard input will be grabbed by the Quicktime object from the whole browser.

Clicking again on the same input field you are typing doesn't help, the only way to get the input back in the browser is to click somewhere else and then again in the input field.

I've already tried (without success) to cache the last active element (window.document.activeElement) and recall focus() on it. Now I'm trying variants that includes caching of the activeElement and a delayed attempt of moving out and in the focus from it...

UPDATE:

Add what follows to Sound.play() to avoid the problem (does not always work, to be tested):


  play: function(url){
    // Cache the current active element for later restoring
    Sound._lastActiveElement = window.document.activeElement;

    // ...

    if (Prototype.Browser.Gecko) {
      // Blur the Quicktime object and focus the cached active element
      $$('body embed, body object').first().blur();
      Sound._lastActiveElement.focus();
      Sound._lastActiveElement = null;
    };
  },
  stop: function(url){
    // ...

Comments and changes to this ticket

  • Elia Schito

    Elia Schito August 21st, 2008 @ 05:22 PM

    Below one of my attempts on working-around this problem, perhaps' a good hint.

    To be added at the end of Sound.play()

    @@@javascript

    if (Prototype.Browser.Gecko) {
      // Blur the Quicktime object and focus the cached active element
      $$('body embed, body object').first().blur();
      Sound._lastActiveElement.focus();
      Sound._lastActiveElement = null;
    };
    
    
    
  • Elia Schito

    Elia Schito August 21st, 2008 @ 05:22 PM

    • Tag changed from scriptaculous, sound to firefox 3, scriptaculous, sound

    Below one of my attempts on working-around this problem, perhaps' a good hint.

    To be added at the end of Sound.play()

    @@@javascript

    if (Prototype.Browser.Gecko) {
      // Blur the Quicktime object and focus the cached active element
      $$('body embed, body object').first().blur();
      Sound._lastActiveElement.focus();
      Sound._lastActiveElement = null;
    };
    
    
    

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

script.aculo.us is an open-source JavaScript framework for visual effects and interface behaviours.
<br/><b>Source available from github</b>
The Git repository resides at:
<a href="http://github.com/madrobby/scriptaculous">http://github.com/madrobby/scriptaculous</a>
<br/>Check out the current development trunk with:
<code>git clone git://github.com/madrobby/scriptaculous.git</code>
<br/>As <b>script.aculo.us 1.xx is feature-frozen</b>, this development trunk is for <b>bugfixes only</b>.
<br/>New development should happen only for
<b>script.aculo.us 2</b>.
<br/><b>Creating a bug report</b>
When creating a bug report, be sure to include as much relevant information as possible. Post a an example that shows off the problem. Preferably, <b>alter the unit tests</b> and show through either changed or added tests how the expected behavior is not occuring.

People watching this ticket

Pages