すべての iframe を検索し、iframe コードを画像に置き換えてから、変更された html を返すことを意味する関数に渡す HTML コードがいくつかあります。ただし、返された html の iframe コードは置き換えられないようです。交換を間違って参照しているだけだと確信していますが、私がやろうとしていることと同様の例をオンラインで見つけることができません。それらはすべて、ドキュメント全体または html がドキュメントに表示された後に検索を参照します。この HTML は、アプリケーションの要件によるものではありません。
注意: iframe コードを置き換える YouTube コードを既に生成しています。問題は、置換の実行にあります。
function article_youtube_convert(html) {
//go throught the iframes for youtube and convert them to embed
$(html).find('iframe').each(function(i) {
alert(this.src);
//ok what we need to do here is check if it's youtube
src_youtube = this.src;
if(src_youtube.indexOf('http://www.youtube.com')!=-1){
//so now we need the video id
url_parts = src_youtube.split('/');
youtube_id = url_parts[url_parts.length-1];
url_parts = youtube_id.split('?');
youtube_id = url_parts[0];
youtube_link = 'http://www.youtube.com/watch?v='+youtube_id;
img_youtube = '<a id="tempvid" href="'+youtube_link+'"><img src="http://img.youtube.com/vi/'+youtube_id+'/0.jpg"/><br />View YouTube Video</a>';
$(this).replaceWith(img_youtube);
//alert(document.getElementById('tempvid').innerHTML);
}
});
return html;
}
アップデート
以下のように、outerHTML アプローチを使用して、テキストを変数内の新しい置換テキストに置き換えることにしました。問題なく完全なソースに警告しますが、それでも置き換えられません。
jQuery.fn.outerHTML = function(s) {
return s
? this.before(s).remove()
: jQuery("<p>").append(this.eq(0).clone()).html();
};
function article_youtube_convert(passed) {
//go throught the iframes for youtube and convert them to embed
//alert('inside');
newhtml = passed;
//alert(newhtml);
$(newhtml).find('iframe').each(function(i) {
//alert(this.src);
//ok what we need to do here is check if it's youtube
src_youtube = this.src;
if(src_youtube.indexOf('http://www.youtube.com')!=-1){
//so now we need the video id
url_parts = src_youtube.split('/');
alert('youtube vid');
youtube_id = url_parts[url_parts.length-1];
url_parts = youtube_id.split('?');
youtube_id = url_parts[0];
youtube_link = 'http://www.youtube.com/watch?v='+youtube_id;
img_youtube = '<a id="tempvid" href="'+youtube_link+'"><img src="http://img.youtube.com/vi/'+youtube_id+'/0.jpg"/><br />View YouTube Video</a>';
alert('alert: '+$(this).outerHTML());
sourcethe = $(this).outerHTML();
passed.replace(sourcethe,img_youtube);
//$(this).replaceWith(img_youtube);
//alert($(this));
//alert(document.getElementById('tempvid').innerHTML);
}
});
alert(passed);
return passed;
}