jQuery在Safari中行为不端

时间:2012-10-31 02:00:01

标签: javascript jquery html safari

我遇到了一个问题,即某些代码在所有浏览器中都能正常运行,直到我来到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才能使用音频元素。这将使这个应用程序我修复完全没用,但至少我现在知道。谢谢你们的帮助。

2 个答案:

答案 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 /网页问题。