0

我遇到了一个问题,即某些代码在所有浏览器中都能完美运行,直到我来到 Safari 时它给我带来了问题。我继承了这段代码,而且我不是 jQuery 专家,所以不用说我有点困惑:

var xt_begin=$('#begin')[0];            
xt_begin.currentTime = 0; 
xt_begin.play(); 

“#begin”是在使用此代码的 HTML 中设置的音频元素,并且 .play() 函数位于正在使用的 jQuery 插件中(链接到插件)。

在除 Safari 之外的所有浏览器中,播放被定义为好像 xt_begin 是该计时器类的对象。然而,在 safari 中,它仍然未定义并且代码停止工作。我不知道这是如何发生的或如何解决它。如果需要,我可以发布更多代码,任何帮助将不胜感激。

**更新

经过进一步调查,事实证明它是一个 DOM 元素,而且我有点厚。但是,出于某种原因,Safari 似乎在识别音频元素时遇到了问题。它将其标识为“对象 HTMLelement”,而 Firefox 将其显示为“对象 HTMLAudioElement”。我仍然对这个感到困惑。

**解决了

显然 Safari 需要在您的桌面上安装 quicktime 才能使用音频元素。这将使我正在修复的这个应用程序完全没用,但至少我现在知道了。感谢各位的帮助。

4

2 回答 2

0

真的只是一个评论。该声明:

var xt_begin = $('#begin')[0];

实际上与以下内容相同:

var xt_begin = document.getElementById('begin');

xt_beginDOM 元素或undefined(jQuery) 或null(plain JS)也是如此。它是哪一个?

无论如何,您可能应该遵循:

if (xt_begin) {
  /* do stuff with xt_begin */
}

以避免错误。

于 2012-10-31T02:04:48.910 回答
0

尝试:

var xt_begin = document.getElementById('begin');

而不是 jQuery 行。这适用于所有浏览器,并且至少会告诉您是否有 jQuery 问题或 Safari/网页问题。

于 2012-10-31T02:04:54.483 回答