【问题标题】:javaScript lose focus when I append <embed>当我附加 <embed> 时,javascript 失去焦点
【发布时间】:2011-07-16 05:10:11
【问题描述】:

我需要在我的脚本中添加哔声。我每次都添加,当声音必须是。

$("#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" />

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

【问题讨论】:

  • 你应该改用 HTML5 &lt;audio&gt;...
  • 不幸的是,有很多老brouser没有HTML5...
  • 最近的浏览器支持它。给那些使用古老浏览器的人一个升级的理由还不错..

标签: javascript jquery focus embed beep


【解决方案1】:

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

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

我仅出于故障排除目的而推荐此方法……而不是实际修复。执行 .wav 可能比运行下一个进程(即您的 focus())花费更长的时间

【讨论】:

  • 我试过 setTimeout(function(){$("#txt").focus();$("#subDebug").append("

    Message

    "); },5000);我可以听到哔哔声,下一个文本“消息”出现在 div #subDebug 中。但是文本框没有再次获得焦点。不幸的是, setInterval 也不起作用 - 它每次都执行(根据 console.log),但是 $("#txt").focus();不聚焦文本框。
  • 我已经添加了。只有 2 个标签 - div 和 html 文件中的输入。
【解决方案2】:

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

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;
}

【讨论】:

猜你喜欢
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多