HTML divs can go outside browser window?
Asked Answered
G

2

6

I was playing around with ASP.NET Web Parts which has a "drop down" div. It's all the way to the right of the page. When I click to bring it up, it goes off the window. Usually anything off the viewable area will trigger the bottom scrollbars. How is this possible?

alt text

Edit: It's Internet Explorer 8. Below is the markup with some context. The relevant one I think is id=WebPart_wp774658725VerbsMenu. By default it doesn't display. When you click on the td/span Verbs/span VerbsPopup (it could be any), it shows the "dropdown". In Developer Tools I don't see any JavaScript attached to those elements, but if I debug it I see it running some.

<TD class=partTitle>
  <TABLE style="WIDTH: 100%" border=0 cellSpacing=0 cellPadding=0>
    <TBODY>
      <TR>
        <TD style="WIDTH: 100%; WHITE-SPACE: nowrap; CURSOR: move" id=WebPartTitle_wp774658725><SPAN title="Billing Information">Billing Information</SPAN>&nbsp;</TD>
        <TD style="WHITE-SPACE: nowrap">
          <SPAN style="PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; COLOR: white; CURSOR: hand; TEXT-DECORATION: none; PADDING-TOP: 1px" id=WebPart_wp774658725Verbs>
            <SPAN style="FONT-FAMILY: Marlett; FONT-SIZE: 8pt" id=WebPart_wp774658725VerbsPopup>u</SPAN>
          </SPAN>
          <DIV style="DISPLAY: none" id=WebPart_wp774658725VerbsMenu>
            <TABLE style="BORDER-BOTTOM: white 1px solid; BORDER-LEFT: white 1px solid; BACKGROUND-COLOR: maroon; WIDTH: 100%; BORDER-COLLAPSE: collapse; FONT-FAMILY: Arial; FONT-SIZE: 0.8em; BORDER-TOP: white 1px solid; BORDER-RIGHT: white 1px solid" cellSpacing=0 cellPadding=1>
              <TBODY>
                <TR>
                  <TD style="WHITE-SPACE: nowrap">
                    <DIV>
                      <A class=menuItem title="Deletes 'Billing Information'" onclick="if(document.body.__wpmDeleteWarning.length == 0 || confirm(document.body.__wpmDeleteWarning)){document.body.__wpm.SubmitPage('WebFormDisplay1$MainPageWPZ', 'delete:wp774658725');}" href="javascript:void(0)">
                        <IMG style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: none; VERTICAL-ALIGN: middle; BORDER-LEFT-STYLE: none" alt="Deletes 'Billing Information'" src="/WebResource.axd?d=5L7XWTaglMPmXRe6NJDkRg2&amp;t=633802513995006876" width=16 height=16>&nbsp;Delete&nbsp;
                      </A>
                    </DIV>
                  </TD>
                </TR>
              </TBODY>
            </TABLE>
          </DIV>
        </TD>
      </TR>
    </TBODY>
  </TABLE>
</TD>


WebParts.js
    function WebPartMenu_OnClick() {
    var a = window.event.srcElement.__menu;
    if (typeof a != "undefined" && a != null) {
        cancelEvent(window.event);
        a.Show()
    }
}

function WebPartMenu_Show() {
    if (typeof __wpm.menu != "undefined" && __wpm.menu != null) __wpm.menu.Hide();
    var e = "<html><head><style>" + "a.menuItem, a.menuItem:Link { display: block; padding: 1px; text-decoration: none; " + this.itemStyle + " }" + "a.menuItem:Hover { " + this.itemHoverStyle + " }" + '</style><body scroll="no" style="border: none; margin: 0; padding: 0;" ondragstart="window.event.returnValue=false;" onclick="popup.hide()">' + this.menuElement.innerHTML + "<body></html>",
    b = 16,
    c = 16;
    this.popup = window.createPopup();
    __wpm.menu = this;
    var d = this.popup.document;
    d.write(e);
    this.popup.show(0, 0, b, c);
    var a = d.body;
    b = a.scrollWidth;
    c = a.scrollHeight;
    if (b < this.menuLabelElement.offsetWidth) b = this.menuLabelElement.offsetWidth + 16;
    if (this.menuElement.innerHTML.indexOf("progid:DXImageTransform.Microsoft.Shadow") != -1) a.style.paddingRight = "4px";
    a.__wpm = __wpm;
    a.__wpmDeleteWarning = __wpmDeleteWarning;
    a.__wpmCloseProviderWarning = __wpmCloseProviderWarning;
    a.popup = this.popup;
    this.popup.hide();
    this.popup.show(0, this.menuLabelElement.offsetHeight, b, c, this.menuLabelElement)
}
Godding answered 24/3, 2010 at 20:26 Comment(5)
Showing some of your code might help.Xylene
Yes, I see what you mean. The tooltip is part of the OS, so that's easy to explain. Not so easy to explain the popup menu, however. Perhaps it's just a toolbar/menu-less browser window?Blithe
What does the page markup look like?Crudity
Sorry for not providing more information, I have updated my question. I think the key here is window.createPopup(), along with the var e = "<html>...". It's almost like a completely separate page without the IE "chrome". I am guessing this is not cross-browser compatible, and that is probably why they "degrade" to no popup on other browsers.Godding
At first sight it looks like a standard div. The HTML I posted comes up even in IE, so it looks like the "cross-browser" HTML always gets generated. If it's not needed it's set to display: none. Then apparently if it's supported, the JavaScript that uses window.createPopup() kicks in, injecting completely different HTML and never displaying the original HTML.Godding
P
2

It is indeed the createPopup method that does the trick. It's a proprietary method in Internet Explorer.

See http://msdn.microsoft.com/en-us/library/ms536392%28VS.85%29.aspx.

Peri answered 26/3, 2010 at 9:56 Comment(1)
From your link, as of IE11 createPopup is no longer supported.Godding
C
0

Why not add a little extra to the margin there? Seems like the most easiest and cheapest way to save time.

Conceptionconceptual answered 26/3, 2010 at 12:48 Comment(1)
Yeah, that's not a problem. I just didn't understand how it was going off the browser window.Godding

© 2022 - 2024 — McMap. All rights reserved.