web-dev-qa-db-ja.com

YouTubeのURLを埋め込みコードに置き換えます-エラー:プロパティ 'toString'へのアクセスが拒否されました

私はこのコードとFireBugにこのエラーがあります:

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

このエラーを修正するにはどうすればよいですか?

HTML:

<div class="yturl">http://www.youtube.com/watch?v=UNMLEZrukRU</div>

JS:

$("div.yturl").each(function(){
    var regex = /(\?v=|\&v=|\/\d\/|\/embed\/|\/v\/|\.be\/)([a-zA-Z0-9\-\_]+)/;
    var youtubeurl = $(this).text();
    var regexyoutubeurl = youtubeurl.match(regex);
    if (regexyoutubeurl) 
    {
         $(this).html("<iframe width=\"390\" height=\"315\" src=\"http://www.youtube.com/embed/"+regexyoutubeurl[2]+"\" frameborder=\"0\" allowfullscreen></iframe>");
    }
});

DEMO:http://jsfiddle.net/9e48p/

43
JohnMalcom

このエラーは、AdobeのFlash PlayerチームまたはGoogleのエンジニアが修正できます。現時点では無視してください。これは、Flash Playerのセキュリティ設定とYoutubeページに埋め込まれたSWFファイルに接続されています。問題は 過去にIBMによって報告された であり、 Mozilla Bugzillaエントリ もあります。

Firefox 16.0.2でFlash Playerを無効にすると、エラーメッセージが消えます。コメント#37を確認してください: https://bugzilla.mozilla.org/show_bug.cgi?id=434522#c37

それが価値があるのは、anyフラッシュファイル、actionscript呼び出し(ExternalInterfaceなど)がまったくないものであっても、ページドメインとiframeドメインが異なるページ上のiframe。これは、実際にクロスドメインの状況が存在するときにiframe問題が引き起こされることを意味します。ただし、shouldを防ぐ必要があり、エラーが発生するクロスドメインコールを実際に試みているかどうかは完全には明らかではありません。

フラッシュSWF自体が「Location.toString」を実行するために呼び出そうとすることはなく、ページ上のjavascriptがそれを実行することも何もないため、唯一の選択肢は、フラッシュプラグイン自体に関するものがあることです(9.0.124はLocation.toString()を実行するために親/トップウィンドウを呼び出すことを試みている)でテストしています。

バグは解決済みとしてマークされていますが、添付されているテストケース https://bug434522.bugzilla.mozilla.org/attachment.cgi?id=321956 は、最新のFirefoxバージョンで同じエラーメッセージを生成します(両方ともFirebugコンソール、またはFirefoxエラーコンソールウィンドウ)。

更新:
このバグは古いバグデータベースにもアドビと共に提出されています。 FP-561 "Location.toString"キャッチされない(セキュリティ)例外は、不適切なFlashプラグインの動作に起因します (必要ですアカウントでバグの詳細を確認してください)。バグがクローズされたときの最後のコメント:

Firefox 4および5上の最新のFlash Player 10.3.181.34でテストされ、そのような例外はスローされませんでした。バグは修正されたかもしれませんよね?それでもこの問題が解決しない場合は、新しいバグシステム https://bugbase.Adobe.com/ にバグを登録し、このバグに元のJIRAレポートへのリンクを追加してください。新しいバグシステムでレポートをフォローアップさせていただきます。

67
raju-bitter

コードに直接関係しないという理由だけで、このエラーを無視しないでください。

埋め込みが最初に非表示になったときに発生するようです。

埋め込みURLに?html5=1を追加するだけです。 IE8は引き続きフラッシュバージョンを使用します。またはYoutube APIを使用して動画を読み込みます。

48
air

IframeのURLコンストラクターに問題がある可能性があります。エラーは、iframeに読み込まれるyoutubeスクリプトでスローされています。スクリプトで動的に追加されないharcoded html iframeでも同じエラーがスローされます

<iframe width="390" height="315" src="http://www.youtube.com/embed/UNMLEZrukRU" frameborder="0" allowfullscreen></iframe>

HTMLバージョンのみのデモ http://jsfiddle.net/Lgt5f/

URLにパラメーターが欠落していないことを再確認してください。そうでない場合は、YouTubeサポートリソースを確認します

2
charlietfl

この問題は、拡張機能が適切に機能していないことが原因である可能性があります。

セーフモードを使用したFirefoxの問題のトラブルシューティングでFirefoxを起動し、拡張機能の1つまたはハードウェアアクセラレーションが問題の原因になっているかどうかを確認します(デフォルトテーマに切り替える:Firefox /ツール>アドオン>外観/テーマ)。

1
NullPoiиteя

このエラーは無視してください。コードとは関係ありません。ブラウザのバグです。

0
Alvarez