1

問題を検索したときに、特にこれを見つけました: Uncaught TypeError: Cannot call method 'toLowerCase' of undefined 調べましたが、私の場合は関係がないようでした (間違っている可能性があります!)。

とにかく、 HTML ファイルに「 http://www.youtube.com/player_api 」を含めて Youtube Iframe API を使用しています。ページの準備ができたら、7 つの iframe を DOM に追加します。それらは独自の ID (例 id="0") を取得し、これを for ループで変更します。iframe ごとに、Youtube API 機能を適用するメソッドを呼び出しますビデオ:

function addPlayerAPIToVideo(vidId, link, plId) {
    if (players[plId] === undefined) {
        players[plId] = new Array();
    }

    playlistPlayers[plId][vidId] = new YT.Player(vidId, { //Error comes from the YT.Player function
        videoId: link,
        events: {
            'onStateChange': onPlayerStateChange
        }
    });
}

vidId は、このメソッドを呼び出す前に作成した iframe の ID です。このエラーの間、plId は == 0 であり、その値は結果に影響しません (この場合)。link は Youtube の動画 ID で、長さは 11 文字で、TMTpeDM7GN0 のようになります。

この関数を 1 回呼び出すとエラーは発生しませんが、2 回目に呼び出すとエラーが発生します (タイトルを参照)。また、Firefox によると、「 http://s.ytimg.com/yts/jsbin/www-widgetapi-vflZPZFPk.jsTypeError: c.tagName is undefined 」の 18 行目の「 」に問題があるとのことです。

かなり長くなってしまいましたが、出来るだけ詳しくまとめてみました。

すべてのヘルプは大歓迎です!

4

1 に答える 1

6

非常によく似たエラーが発生しました。私の問題は、生の要素ではなく JQuery 要素を渡していたようで、tagName がありませんでした。あなたの質問は私が必要としていた手がかりを与えてくれました。どうもありがとうございました! おそらく、id を渡すのではなく、自分で要素を取得して、tagName メンバーを持つオブジェクトを確実に取得することができます。

于 2013-06-26T10:50:42.793 に答える