Div above iframe with flash content

2019-08-04 01:53发布

问题:

I want to place a div above an iframe with flash content (for example like a youtube video). I do not have access to the content in the iframe, so I can't modify something in there.

I've tried a lot of things (z-index... everything). But nothing works. I am only asking because I really can't find a solution :(

The problem is that the iframe contains the flash content.

回答1:

I can't really help with a tested solution I'm afraid, as I don't have any flash files to test creating an answer with, but I can tell you why this is happening.

Flash is a browser plugin, which means flash movies are never really part of the HTML document. Instead what happens is the area of the page is reserved for the plugin to run in, which is then invoked and runs 'on top' of the page. Therefore setting z-index on other elements will never actually solve the problem, no matter what combination you try.

However, there is a 'magic' parameter / attribute you can set on the elements themselves that the plugin recognises, called "wmode". If you set this parameter / attribute to 'transparent', the Flash plugin allows some HTML elements to show through, giving the illusion that they are on top of the Flash movie.

If you're able to contact the owner of the iframe to set the wmode parameter to transparent, I'd suggest doing that. If this is a youtube or vimeo embed, see if there's any documentation or options on adding the parameter yourself.

Failing that there's not a lot you can do, as even JavaScript won't be your friend here (you can't modify the contents of a frame with JS for security reasons)

EDIT:

Just remembered, if there's a way of you using HTML5 video instead of Flash, that would help. HTML5 videos are rendered as part of the Document Object Model, and therefore are controllable through the z-index property.

Neal



回答2:

iframe tags have the highest z-index. They go above all else on pages. You can place one iframe above another though, and put your text inside of that.

jsFiddle: http://jsfiddle.net/USqxj/30/

<div><iframe style="width:100px;height:100px;"></iframe></div>
<div><iframe style="width:50px;height:50px;position:absolute;margin-top:-85px;left:25px;"></iframe></div>