12

このコードで YouTube ビデオを埋め込もうとしています:

<iframe width="425" height="319" frameborder="0" wmode="Opaque"allowfullscreen=""
      src="http://www.youtube.com/embed/8vJwFvFi4ZY?wmode=transparent">
</iframe>

正常に動作していますが、コンソールに次のエラーが表示されます。

Chrome バージョン 22.0.1229.94:

安全でない JavaScript が、URL http://www.youtube.com/embed/8vJwFvFi4ZY?wmode=transparentのフレームから URL http://example.com/のフレームにアクセスしようとしています。 ドメイン、プロトコル、およびポートが一致する必要があります。

Firefox バージョン 17.0:

エラー: プロパティ 'toString' へのアクセス許可が拒否されました

いろいろ調べてみたのですが、おそらく YouTube の問題であり、解決する必要があることがわかりました。

問題は、どうすればこのエラーを取り除くことができるでしょうか? (とにかく、それを抑制しても。)

4

5 に答える 5

13

あなたはそれを止めることはできません、少なくとも私が知っている方法ではありません(そして私はたくさん試しました)。ドキュメントにアクセスしようとするスクリプトがiframeの宛先にあり、おそらくAPIを有効にするために呼び出すことができるグローバル関数を探しています。

もう1つは、独自のiframe APIを使用している場合でもエラーが続くことです:http ://jsbin.com/izabed/1/edit

これには害はありません。ビデオは正常に機能します。しかし、コンソールで実行すると、ちょっと大胆に見えます。おそらくこれをパラメータとして含めるべきであり、最初はこれがパラメータのアイデアだと思いましたが、origin違いはありません。

また、独自のデモで同じエラー(およびその他)が表示されることにも注意してください。また、embediframeの代わりにタグを使用すると、エラーは表示されません。

したがって、ほとんどのデスクトップブラウザでエラーを防ぐために、次のようなことを行うことができます。

if(haveflash) {
    // use <embed>
} else {
    // use iframe
}

アップデート

ほとんどのブラウザはフラッシュをサポートしなくなり、Adobeもサポートしなくなりました。残念ながら、これは使用<embed>がもはや実行可能なオプションではないことを意味します。

于 2012-11-29T14:28:35.683 に答える
2

コメントからこの回答に議論を移します。つまり、問題は、クロスドメインJSオブジェクトアクセスが許可されていないことです。この場合、youtube.comのスクリプトが親ページに対して実行しようとしています。

YouTubeビデオのみを表示したい場合は、<embed>代わりにタグを使用できます。

于 2012-11-29T14:23:49.017 に答える
2

?html5=1このエラーを防ぐために追加するだけです。(HTML5プレーヤーに切り替え)

于 2015-01-20T08:00:11.183 に答える
0

何のブラウザですか?このページの Firefox で JavaScript を使用して iframe を追加しようとすると、エラー/警告が表示されません。

于 2012-11-29T12:03:05.817 に答える
0

CSSしか使えないのに、なぜJavascriptを使うのでしょうか?それは毎回動作します。レスポンシブ スライダーに任意のビデオを組み込むこともできます。

または、http: //embedresponsively.com/にアクセスしてください。

<style>
.embed-container 
{ 
position: relative; 
padding-bottom: 56.25%; 
height: 0; 
overflow: hidden; 
max-width: 100%; 
} 

.embed-container iframe, .embed-container object, .embed-container embed 
{ 
position: absolute; 
top: 0; 
left: 0; 
width: 100%; 
height: 100%; 
}
</style>

<div class='embed-container'>

<iframe src='https://www.youtube.com/watch?v=tntOCGkgt98' frameborder='0' allowfullscreen>
</iframe>
</div>
于 2016-09-28T02:44:35.097 に答える