2012-02-19 12 views
1

埋め込みオブジェクトを検出するjavascript関数を記述しようとしています。 <object data="intro.swf" height="200" width="200"/>javascript/jQueryを使用して埋め込みオブジェクト(esp flashファイル)を検索する

  • Embedタグ、例:<embed src="intro.swf" height="200" width="200"/>

  • 私の3時間の研究の結果として、私はHTMLで

    1. Objectタグ、例を.swfファイルを使用するには、2つの主要なアプローチがあることがわかりました

    しかし、クロスブラウザと何とかより一般的である第三のアプローチがあります:

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" 
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" 
        width="100" 
        height="100"> 
    <param name="movie" value="sample.swf"> 
    <param name="quality" value="high"> 
    <embed src="sample.swf" quality="high" width="100" height="100" 
         type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> 
    

    私は機能hereが見つかりました:

    function getFlashMovieObject(movieName) { 
        if (window.document[movieName]) { 
         return window.document[movieName]; 
        } 
        if (navigator.appName.indexOf("Microsoft Internet") == -1) { 
         if (document.embeds && document.embeds[movieName]) 
          return document.embeds[movieName]; 
        } 
        else // if (navigator.appName.indexOf("Microsoft Internet")!=-1) 
        { 
         return document.getElementById(movieName); 
        } 
    } 
    

    をしかし、この関数は、引数としてID /名属性を取り、私のために良いではありません。 最初にブラウザを検出してから、フラッシュオブジェクトを探す方が良いと思いました。 私はまだ試しています。 レンダリングされたフラッシュオブジェクトを検出するにはどうすればよいですか?

    +0

    私はかつてフラッシュを見つけるためにブックマークレットを書いていました。この楽しい事実を覚えています: 'object'は入れ子にすることができるので、' object'の 'object'デタンがあるかもしれません。そしてもちろん、埋め込みはオブジェクトの子としてよく使われます。あなたはそれをフィルタリングする必要があります。 – user123444555621

    答えて

    1

    これはどう:

    のjQuery:

    $('object:has(embed)'); 
    

    バニラJS:

    function getCompleteObjects() { 
        var objects = document.getElementsByTagName('object'), 
         len = objects.length, 
         complete = [], 
         i = 0; 
    
        for (; i < len; i++) { 
         var embed = objects[i].getElementsByTagName('embed'); 
         if (embed) { 
          complete.push(objects[i]); 
         } 
        } 
    
        return complete; 
    } 
    

    jQueryのフィドル:http://jsfiddle.net/Kai/9vFgT/

    バニラJSフィドル:http://jsfiddle.net/Kai/WZEvF/

    +0

    Answer palに感謝します。私は 'document.embeds'について知っていましたが、オブジェクトタグはどうですか?フラッシュが正常にロードされているかどうかを知ることは重要ではありません。私はフラッシュオブジェクト全体を持つ必要があります。 –

    +0

    ああ、私は今理解していると思う。私はちょうど私の答えを編集しました。 – Kai

    +0

    IEでは 'object'タグが動作し、' embed'タグは無視されます。 (私が思うように、私は確信していません)none-IEブラウザは 'embed'タグがオブジェクトタグに含まれていれば埋め込みタグを使用しています。 –

    関連する問題