0

Safariにアクセスして問題が発生するまで、特定のコードがすべてのブラウザで完全に機能するという問題があります。私はこのコードを継承しましたが、私はjQueryの専門家ではないので、少し困惑していることは言うまでもありません。

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

「#begin」は、このコードを使用しているHTMLで設定されたオーディオ要素であり、.play()関数は使用されているjQueryプラグイン(プラグインへのリンク)にあります。

Safariを除くすべてのブラウザで、playは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(プレーン 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/Web ページに問題があるかがわかります。

于 2012-10-31T02:04:54.483 に答える