2016-12-04 8 views
2

EDIT:以前使用していたビデオファイルに間違ったタイプを使用していたことを正しく示しています。 YouTubeの動画を使いたい場合、iframeタグを使用する必要があることを認識しましたjQueryを使用してビデオ要素を動的に追加する

ソースタグを作成してビデオタグ内に追加する際に問題があります。今すぐsrcがこのようなビデオタグ内に追加されています

src= "[object Object]" 

私はjson配列からデータをロードしています。私はまた、下のコードで表示される私のJSON配列からいくつかの他のデータをロードしています。 私のjQueryの

function postContent(data) { 
    var $h2 = $("<h2>"); 
    var $div = $("<div>"); 

    $h2.html(data.title); 
    $div.addClass("imgPlaceholder " + data.color); 

    var $h3 = $("<h3>"); 
    var $src = $("<src>"); 

    $h3.html(data.videoTitle); 
    $src.html(data.videoSrc); 
    alert($src); 
    var video = $('<iframe />', { 
     id: 'video', 
     src: data.videoSrc, 
     //type: 'video/mp4', This was needed when I used the video tag 
     //controls: true 
    }); 

    //$src.appendTo($('#video')); This broke the page 

    $("#display") 
     .append($h2) 
     .append($div) 
     .append($h3); 

     video.appendTo($('#display')); 

はここに私のhtmlここ

<div id="wrapper" class="group"> 
    <h1></h1> 
    <hr> 
    <ul id="menu"></ul> 
    <div id="display"></div> 
</div> 

である私のJSON配列の編集:変更SRCユーチューブの動画へ

あなたが直接 videoソースパスを設定する必要が
{ 
"appTitle": "Content Navigator", 
"posts": [ 
{ 
    "id": 1, 
    "title": "Content 1", 
    "videoTitle": "Video Title 1", 
    "color": "orange", 
    "videoSrc": "https://www.youtube.com/watch?v=nRSYU4YSISA", 
}, 
{ 
    "id": 2, 
    "title": "Content 2", 
    "videoTitle": "Video Title 2", 
    "color": "purple", 
    "videoSrc": "https://www.youtube.com/watch?v=WijDExREruo", 
}, 
+0

あなたのビデオソースは、あなたはおそらく「ビデオ/ WEBM」にこれが今取り組んでいる – Punit

答えて

1

src要素ではありません。

WebMビデオを使用している場合は、タイプを変更する必要があります。

var video = $('<video />', { 
    id: 'video', 
    src: data.videoSrc, 
    type: 'video/webm', 
    controls: true 
}); 

あなたのページにYouTube動画を埋め込みたい場合は、別の方法で行う必要があります。画像のようにHTMLをコピーします。

enter image description here

それはこのようになります。

<iframe width="560" height="315" 
    src="https://www.youtube.com/embed/T-Lvyr0OCT8" 
    frameborder="0" 
    allowfullscreen></iframe> 

ではなくvideoタグのあなたのjavascriptに属性をコピーして使用してiframe

var video = $('<iframe/>', { 
    id: 'video', 
    src: 'https://www.youtube.com/embed/P3y8vc-3iVU', 
    width: 560, 
    height: 315, 
    allowfullscreen: '' 
}); 
+0

おかげvideo要素のtype属性を変更したい.webmファイルである場合。私が使っていたリンクは単なる例でした。私の最終版ではおそらくyoutubeのビデオを使用するつもりです。それは、私のビデオタグをiframeに切り替えることだけです。 –

+0

@OmegaCollision youtubeもhtml5タグビデオと連携しています。彼らはちょうど他のタイプで働いています。しかし、彼らはソースへの直接アクセスを制限するように思えるので、共有をクリックすると表示されるiframeを使用する必要があります。 – NtFreX

+0

何らかの理由でiframeが動作しません。私は変更を反映するためにOPを更新しました。要素を調べると、iframeタグはうまく見えますが、内側にネストされた#documentという要素があります。私はこれがどこから来ているのかわからない、またはウェブページのiframeが空白に見える理由 –

0

私はあなたがこの行をコメントアウトしたことに気づいた:あなたは要素を探しているので、私はそれを置き換えるためにあなたを必要とし

$src.appendTo($video); 

//$src.appendTo($('#video')); 

に交換してくださいまだDOM内に作成されていないビデオのIDを持つ。

とにかく、それを調べて、それが動作するかどうかを確認してください。

0
var $src = $("<src>"); 
// ... 
$src.html(data.videoSrc); 

あなたのコード内のこれらの行は、<src>要素のjQueryオブジェクトを作成し、あなたのビデオソースでそれを埋めるので、あなたは、本質的になっているはずだHTML要素はこれです:

<src>http://i.imgur.com/H0ibdlc.webm</src> 

あなたはこれを行う必要はありません。 data.videoSrcは単なる文字列であり、ビデオ要素のsrc属性は単なる文字列を必要とします。あなたのvideo要素を作成するときだけ、それを直接参照:

var video = $('<video />', { 
    id: 'video', 
    src: data.videoSrc, 
    type: 'video/webm', 
    controls: true 
}); 
+0

あなたは正しいです。私は私のOPを編集しました。なぜなら、私はyoutubeビデオをリンクしたいのですが、私は別のタグを使う必要があることに気づきました。ページの要素を調べると、iframeタグの内側に動画のURLが表示されます。しかし、私が見ているのは、ビデオがすべきである正方形の輪郭です –

関連する問題