2017-05-06 3 views
0

私のページにローカルiFrameを生成する外部スクリプトがあります。 iframeはvideojsプレーヤーをロードしています。Javascriptのミューテーションオブザーバ関数を使用すると、生成されたiFrameのJavaScript関数にどのようにアクセスできますか

iframeにアクセスしてvideojs play()関数を呼び出して、動画の再生を開始したいとします。

唯一の問題は、ロードされるまで親DOMを使用してアクセスできないため、突然変異オブザーバ関数を使用して生成され、ページにロードされたことを確認することです。

正常に動作しましたが、私は単にvideojs関数にアクセスすることができないように見えます。「未定義のプロパティ再生を読み取ることができません」。

  var observer = new MutationObserver(function(mutations){ 
      mutations.forEach(function(mutation) { 
       for (var i = 0; i < mutation.addedNodes.length; i++) 
       { 
        //console.log(mutation); 
        mutation.addedNodes[i].contentWindow.player.play(); 
       } 
      })      
     }); 
+0

追加されたノードは、プレーヤーのインスタンスであるかどうかを確認してください。さもなければあなたのループはクラッシュするでしょう... –

+0

addedNodeがiframeであり、その内部にプレーヤーオブジェクトがあるはずですが、常に未定義として戻ってきます。実際、ページをロードしてコンソールを使用するのを待つと、iframeに直接アクセスしてビデオを再生することができます。 – user3200080

答えて

0

私は負荷にIFRAMEを待つことによって、この作業を取得するために管理:

  var observer = new MutationObserver(function(mutations){ 
      mutations.forEach(function(mutation) { 
       for (var i = 0; i < mutation.addedNodes.length; i++) 
       { 
        mutation.addedNodes[i].contentWindow.onload = function(){ 
         this.player.play(); 
        }; 
       } 
      })      
     }); 
+0

完璧!緑のチェックマークをチェックしてこれを閉じてください... –

関連する問題