Closed Bug 561157 Opened 14 years ago Closed 14 years ago

iframe/browser element does not accept keyboard input in popup panel

Categories

(Core :: XUL, defect)

x86
Windows Vista
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 385609

People

(Reporter: brn, Unassigned)

Details

Attachments

(1 file)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)

When a panel is shown as a popup, and this panel contains an iframe, this iframe does not (always) accept keyboard input.

Reproducible: Sometimes

Steps to Reproduce:
1. Create a button in XUL overlay with popup handler set to a panel.
2. In the same panel specified above, add an iframe with a src that contains a textbox.
3. Load this overlay and click the button.
4. Attempt to type in the iframe's textbox.
Actual Results:  
The textbox does not accept keyboard input.  Exact results have varied between different machines/installations:

In one case, on Windows Vista, the popup works correctly the first time it is shown, but subsequent popups do not accept input.  Note, however, that if the user clicks the gray area outside of the input box, then clicks the input box, it does accept input. 

In another case, on Windows 7, popups do not work at all, including the first popup.  Even clicking in the gray area first, as mentioned above, does not work on this machine.

Expected Results:  
The input box accepts keyboard input.
After installing this extension, click the TEST button that appears next to the navigation bar to see a simple popup with this problem.
Confirmed with Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.3a5pre) Gecko/20100421 Minefield/3.7a5pre
Status: UNCONFIRMED → NEW
Ever confirmed: true
For now, can anyone suggest a workaround?  The general idea we're trying accomplish is showing an HTML document in a popup so it can be used with jQuery, is cross-browser compatible, etc.  Showing an iframe in a XUL popup panel was the most obvious way to do this, but we're open to any method.
Here is stupid workaround.

<?xml version="1.0" encoding="UTF-8"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script type="application/javascript" xmlns="http://www.w3.org/1999/xhtml"><![CDATA[
      var windowObjectReference;
      function xxx_onPopupshowing(event) {
        window.windowObjectReference = window.open("chrome://popuptest/skin/test.png",
              "dummy",
              "left=-10000,resizable=no,scrollbars=no,status=no,chrome=no");
        setTimeout(function(self){
          document.getElementById("panel").focus();
          document.getElementById("xxxIframe").contentWindow.focus();
        },100, this);
      }
      function xxx_onpopuphidden(event) {
        window.windowObjectReference.focus();
          setTimeout(function(self){
          window.windowObjectReference.close();
        },100, this);
      }
    ]]></script>
    <toolbaritem id="urlbar-container">
        <toolbarbutton id="libx-button" insertafter="urlbar-search-splitter"
            image="chrome://popuptest/skin/test.png"
            popup="panel"
        />
    </toolbaritem>
    <popupset>
        <panel id="panel"
               onpopupshowing="xxx_onPopupshowing(event);"
               onpopuphidden="xxx_onpopuphidden(event);">
            <iframe id="xxxIframe" src="chrome://popuptest/content/popup.html" width="200" height="50"/>
        </panel>
    </popupset>
</window>
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
(In reply to comment #4)
> Here is stupid workaround.

Alice, thanks for the workaround.  When I try to set the panel's position, like in the following:

<panel id="panel" position="after_end"
               onpopupshowing="xxx_onPopupshowing(event);"
               onpopuphidden="xxx_onpopuphidden(event);">
            <iframe id="xxxIframe" src="chrome://popuptest/content/popup.html"
width="200" height="50"/>
</panel>

the popup doesn't appear at all.  Do you have any ideas for setting the popup's position?
May I follow-up on the work-around?

In addition to being unable to set the panel's position, the work-around has other flaws.  First, it degrades the user experience because a second, small, empty top-level window appears (which shows up in the task list!).

Second, it doesn't work if the window has been moved towards the lower end (vertically) of the screen such that the panel doesn't fit in the remaining portion vertically. In this case, the panel flickers, then disappears.

Third, it doesn't work on dual-head displays - in those cases, the position "left=-10000" appears to be ignored and the window shows up visible, and straight in the center of the second display.

Could you explain what series of events you're trying to trigger to work around the problem in Firefox?  Perhaps there is a carefully crafted way to send these events to achieve the same effect?
Set level="top" on panel...there some issues with cursor inside input, but it works
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: