Skip to main content

How to find out whether an element is in a hidden iframe



Using jQuery, one can easily find out whether a particular element is visible using







$(element).is(':visible')







While having some limitations (doesn't cover css visibility hidden or the actual visibility in the viewport, i.e. whether it's covered by other elements or scrolled away), I find it being useful for my scenario. The catch is, it only works within one iframe.





If the element has any parent within its document with display:none; , it returns false. If the whole document is included in an iframe which has display:none , it returns true. Is it possible to somehow detect this in another way ?


Comments

  1. Hmm, seems like you have to call top (parent) document within an iframe, then search for specific iframe and check if it's visible.

    You'll probably have to have same domain/subdomain for this to work, but anyway:

    Let's assume you know iframe id/class (you have to).

    if ($(top).find('#iframeID').is(':visible')) {
    // iframe is visible
    } else {
    // iframe is NOT visible
    }


    Can't guarantee correct work.

    ReplyDelete
  2. Seems that the window's frameElement property works in all browsers and delivers the current iframe where the window is contained (if cross-domain restriction doesn't apply, which was my case).

    ReplyDelete
  3. not possible afaik. an iframe is basically a different site and as such guarded against xss. simply don't use iframes but server-side includes.

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?