我遇到了一个问题,即某些代码在所有浏览器中都能正常运行,直到我来到Safari,它给了我一些问题。我继承了这段代码,而且我不是jQuery专家所以不用说我有点困惑:
var xt_begin=$('#begin')[0];
xt_begin.currentTime = 0;
xt_begin.play();
“#begin”是在使用此代码的HTML中设置的音频元素,而.play()函数位于正在使用的jQuery插件中(Link to plugin)。
在除Safari之外的所有浏览器中,正在定义播放,就好像xt_begin是该计时器类的对象一样。但是,在safari中,它仍未定义,代码停止工作。我不知道这是如何发生的或如何解决它。如果需要,我可以发布更多代码,任何帮助都将不胜感激。
**更新
经过进一步调查后发现它是一个DOM元素,我有点厚。但是,Safari出于某种原因似乎在识别音频元素方面存在问题。它将其识别为“对象HTMLelement”,而Firefox将其显示为“对象HTMLAudioElement”。我仍然难倒这个。
**解决
显然,Safari需要在桌面上安装quicktime才能使用音频元素。这将使这个应用程序我修复完全没用,但至少我现在知道。谢谢你们的帮助。
答案 0 :(得分:0)
真的只是评论。声明:
var xt_begin = $('#begin')[0];
实际上与:
相同var xt_begin = document.getElementById('begin');
所以xt_begin
是DOM元素或undefined
(jQuery)或null
(普通JS)。这是什么?
无论如何,您应该遵循:
if (xt_begin) {
/* do stuff with xt_begin */
}
避免错误。
答案 1 :(得分:0)
尝试:
var xt_begin = document.getElementById('begin');
而不是jQuery行。这适用于所有浏览器,并且至少会告诉您是否存在jQuery问题或Safari /网页问题。