当我追加<embed />时,javaScript会失去焦点

时间:2011-03-15 23:37:23

标签: javascript jquery focus embed beep

我需要在脚本中添加beep。每当声音必须时,我都会添加。

$("#beep").html("<embed src='button-16.wav' hidden='true' autostart='true' loop='false' id='bp' />")

但是当我添加时,我失去了焦点。

我试图通过以下方式再次关注它。

1)

$("#beep").html("<embed src='button-16.wav' hidden='true' autostart='true' loop='false' id='bp' />");
$("#txt").focus();

2)

$("#beep").html("<embed src='button-16.wav' hidden='true' autostart='true' loop='false' id='bp' />");
$("#bp").ready(function(){
    $("#txt").focus(); 
});

但无论是第一种还是第二种方式都无效。

HTML代码。

<div id="beep"></div>
<input type="text" id="txt" />

那么,如何在发出哔哔声之后保存文本框的焦点?

2 个答案:

答案 0 :(得分:0)

你可以尝试设置一个间隔来查看wav文件的结尾是否抓住了焦点吗?

setInterval(function() {
  $("#txt").focus(); 
}, 100);

我只是建议将其用于故障排除目的......而不是作为实际修复。执行.wav可能需要更长的时间,而不是运行作为焦点的下一个进程()

答案 1 :(得分:0)

我找到了解决这个问题的完全不同的方法。 当JavaScript调用它的函数时,我写了* .swf,它发出一声​​哔哔声。

ActionScript代码。

package  {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.media.Sound;
import flash.net.URLRequest;
import flash.external.ExternalInterface;

public class Main extends Sprite {
    var s:Sound;
    public function Main() 
    {
        ExternalInterface.addCallback("PlaySound", PlaySound);
        var request:URLRequest = new URLRequest("beep.mp3");
        s = new Sound(request);
    }
    public function PlaySound():void
    {
        s.play();
    }
}
}

JavaScript代码。

$("#txt").keyup(function(event){
    if(event.which==13){
     var obj=thisMovie("Main");
     obj.PlaySound();
    }
});

function thisMovie(movieName) {
var movie;
try
{
    movie = document[movieName];
    movie = (movie == null) ? window[movieName] : movie;        
}
catch (e)
{
    return null;
}
return movie;
}