【问题标题】:jQuery - sound on mouseover not working correctlyjQuery - 鼠标悬停时的声音无法正常工作
【发布时间】:2018-06-28 09:02:32
【问题描述】:

我正在为孩子们制作一个网站,我希望当有人将鼠标悬停在播放声音的链接上时。

这是我的代码-

<audio id="hoverA">
  <source src="files/sound/hover-01.mp3" type="audio/mpeg">
</audio>

jQuery 代码-

var hoverA = document.getElementById("hoverA");
$(document).ready(function(){
  $(".navbar .nav-link").mouseover(function(){
    hoverA.play();
  });
});

只有当我首先在页面上进行一些活动(如点击键盘、点击鼠标等)时,声音才能正常播放。 刷新后它停止工作,只有当我再次做一些活动时才播放。

【问题讨论】:

  • 您能否显示您的 jQuery 代码在 HTML 文档中的调用位置?还有你上面提到的 jQuery 代码是在一个函数中还是就像在你的帖子中一样:即脚本文件?
  • 是一样的,没有额外的代码。页面名称是 js 文件夹中的 scripts.js。
  • 并且音频代码在 index.php 中。我正在通过索引页面中的脚本 src 链接 scripts.js

标签: jquery html audio mouseevent mouseover


【解决方案1】:

当有人开始将鼠标悬停在链接上时,根据您确切想要的结果,我建议使用两种 jQuery 方法。对于未来的读者或参考,我认为将这两个 jQuery 功能都放下是很有用的。


悬停

使用 jQuery 内置的 .hover 函数。你可以在JSFiddle here.看到一个类似的例子

var hoverA = document.getElementById("hoverA");
$(document).ready(function() {
    $(".navbar .nav-link").hover(function () {
        hoverA.play();
    });
});

进入/离开时

如果您希望它从进入区域或离开区域开始。

var hoverA = document.getElementById("hoverA");
$(document).ready(function() {
        $(".navbar .nav-link").mouseenter(function () {
            hoverA.play();
        }).mouseleave(function ()
        {
            hoverA.play();
        });
});

我认为使用 .hover 功能效果最好,就像使用 .mouseover 一样,我认为它需要先注册用户交互。

希望这会有所帮助! :)

编辑 1:

检查后出现了浏览器问题,如类似的 SO 帖子 here 中所述。它指出:

我在浏览器的响应模式下工作......显然它 然后不会触发 mouseover/mouseout 事件

这似乎是在 jQuery 中触发事件的问题。

【讨论】:

  • 嗨,感谢重播,如果我在悬停脚本中插入 console.log("work") 会给出输出但只有声音会出现问题。我已经尝试了所有这三种方法(悬停,鼠标悬停,鼠标输入),但都有同样的问题。
  • 声音有什么问题?它不会播放任何东西?
  • 玩得很好,但在页面上进行了一些活动(如点击或按下键盘)之后
  • @VikashSDNT 查看this 帖子以检查它不是您的浏览器
  • 兄弟这是我的浏览器问题。
【解决方案2】:

我希望这会有所帮助:css-tricks.com

var beepOne = $("#beep-one")[0];
$("#nav-one a")
	.mouseenter(function() {
		beepOne.play();
	});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul id="nav-one" class="nav">
		   <li>
		   	<a href="#">Item 0</a>
		   	<audio id="beep-one" preload="auto">
				<source src="http://codeskulptor-demos.commondatastorage.googleapis.com/descent/gotitem.mp3"></source>
				<source hrfe="http://commondatastorage.googleapis.com/codeskulptor-assets/jump.ogg"></source>
				Your browser isn't invited for super fun time.
			</audio>
			</li>
		   <li><a href="#">Item 1</a></li>
		   <li><a href="#">Item 2</a></li>
		   <li><a href="#">Item 3</a></li>
		</ul>

【讨论】:

  • 我认为这是我的浏览器问题。
  • @VikashSDNT 你用的是哪个浏览器?
  • 我注意到 .ogg 链接声音不起作用,我尝试为 ogg 链接另一种声音。
  • chrome 最新版
  • 嗯,这很奇怪,因为我也在使用 Chrome 最新版本,它似乎工作得很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
相关资源
最近更新 更多