Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

Is there a way to detect using sp.js or jquery to detect if the current context is in a modal dialog box?

Im not sure I explained that right, so here is a situation:

We have a branded system master page due to some front facing blogs and list views so one of our requirements is to have it look exactly like the branded custom masterpage. Now, due to the styling applied to the system masterpage, the modal dialog boxes for actions like creating a new page are messed up.

Looking at the source, it looks like an iframe is used inside the modal dialog box, so its opening up a new window. My intention is to have a jquery function detect if the current page is a modal dialog box, and if it is, register a new css to override the styles to make the dialog box look normal. Is this possible?

share|improve this question

4 Answers 4

up vote 7 down vote accepted

Try this:

if (window.location.search.match("[?&]IsDlg=1"))
share|improve this answer
1  
+1 I think that's exactly what the OP needs - a way to identify when SharePoint tweaks the page style, iframe or not. –  Christophe May 9 '12 at 23:25
    
This worked perfectly. –  John S May 10 '12 at 21:41

I have added my comments to the above answers. Here are a couple additional - untested - suggestions:

  1. To build on Steve's suggestion, reload the url without IsDlg (simple, just not ideal from a performance viewpoint):

    window.location.href=window.location.href.replace(/[?&]IsDlg=1/,"");

  2. SharePoint uses the class s4-notdlg to identify what should be hidden in a modal dialog. Use css or jQuery to overwrite or remove this class.

share|improve this answer

When in Dialog mode the window.frameElement is NEVER null. use this as example on how to close it remotely

var parentObject = window.frameElement;
    if (parentObject != null) {
        var waitDialog = parentObject.waitDialog;
        if (waitDialog != null) {
            waitDialog.close();
        }
    }
share|improve this answer
2  
Unfortunately this is not supported by all browsers. –  Christophe May 9 '12 at 23:08
    
to my knowledge it is supported by modern browsers, such as IE/FF/Mozzila/Safari, have a look here help.dottoro.com/ljsokerh.php –  C. Marius - MVP May 10 '12 at 14:08
    
I couldn't find a good reference. All recent versions of IE should be fine. Not so sure about Chrome and Safari. –  Christophe May 10 '12 at 15:17
    
IE8 is the current supported browser. –  John S May 10 '12 at 20:58

You could simply use jQuery to identify if the page is loaded in an iframe: http://www.24hourapps.com/2009/01/check-if-page-is-loaded-in-iframe-using.html

var isInIFrame = (window.location != window.parent.location) ? true : false;

SharePoint dialog boxes are simply iframes.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.