1

要するに

divフラッシュがiframe内にあるフラッシュの上にposition=fixedを表示する方法を探しています。

質問

私は現在、ウィンドウの上部に視覚補助を表示するグーグルクローム拡張機能を開発しています。

基本的に、これは。<div>付きのタグposition:fixedです。

問題は、一部のWebサイトがフラッシュコンテンツを表示し、私の拡張機能がそれらのフラッシュ要素の上に配置されると、それらがオーバーレイされることです。それらのフラッシュ要素の上に自分のコンテンツを表示する方法を見つけたいと思います。

問題

フラッシュはiframe要素内にあり、wmodeがwindowに設定されています。これは、すべてをオーバーレイすることを意味します。ただし、フラッシュ要素が別のドメインに存在するため、フラッシュ要素のコンテンツを変更できません(試行すると同一生成元エラーが発生します)

避けたいこと

すべてのWebサイトで拡張機能を実行したり、そのリファラーが実行しているサイトであるかどうかを確認したりすることは避けたいと思います。

4

2 に答える 2

2

次のように、iframeのコンテキストでスクリプトを実行できます。

var code = '[].forEach.call( document.querySelectorAll("embed"), function(embed){embed.setAttribute("wmode", "transparent")});';

chrome.tabs.executeScript( tabRef, {

    code: code,

    allFrames: true //Executes the script in all frames


}, function() { });

これにより、すべての埋め込み要素が検索され、html要素がそれらをオーバーレイできるようにに設定されwmodeます"transparent"

参照:http ://developer.chrome.com/extensions/content_scripts.html#pi

于 2012-08-13T20:08:08.000 に答える
1

私はあなたの質問がこれに非常に似ていると信じています:youtubeiframeの上に不透明なdivをオーバーレイします

私が正しく理解していれば、iframeの埋め込みにwmode=opaqueパラメーターを追加することで問題を解決できます。例(YouTubeビデオ付き):

-HTMLiframe埋め込み

wmode = opaqueパラメーターがiframeのソースURLの後の最初のパラメーターであることを確認してください(ここで説明されているように:youtube iframe上に不透明なdivをオーバーレイします)

<iframe class="youtube-player" type="text/html" width="520" height="330" src="http://www.youtube.com/embed/CMNry4PE93Y?wmode=opaque" frameborder="0"></iframe>

-CSS

#overlay {
position:fixed;
top:0;
left:0;
width:100%;
height:100%;
background:#000;
opacity:0.8;
/*background:rgba(255,255,255,0.8); or just this*/
z-index:50;
color:#fff;

}

于 2012-08-18T10:28:32.000 に答える