Javascript WinJS弹出按钮持续关闭-无法单击控件

Javascript WinJS弹出按钮持续关闭-无法单击控件,javascript,html,microsoft-metro,win-universal-app,winjs,Javascript,Html,Microsoft Metro,Win Universal App,Winjs,我正在编写一个Win Universal应用程序(JS),并实现了一个弹出按钮。可通过工具栏中的按钮访问弹出按钮。弹出按钮代码- <button data-win-control="WinJS.UI.Command" data-win-options="{ id:'cmdChangeCategory', label:'Change Category', section:'selection', type:'flyout',

我正在编写一个Win Universal应用程序(JS),并实现了一个弹出按钮。可通过工具栏中的按钮访问弹出按钮。弹出按钮代码-

<button data-win-control="WinJS.UI.Command" data-win-options="{
        id:'cmdChangeCategory',
        label:'Change Category',
        section:'selection',
        type:'flyout',
        icon:'video',
        tooltip:'Change Category',
        flyout:'changeCatFlyout'}"></button>

弹出式分区-

<div id="changeCatFlyout" data-win-control="WinJS.UI.Flyout">
    <label for="ddlChangeCategory" style="display:block;clear:both;margin-top:10px">Select Category</label>
    <select id="ddlCategoryChange"></select>
    <button id="btnChangeCategory" title="Change" style="display:block;clear:both;margin-top:10px">Change</button>
</div>

选择类别
改变
单击按钮时弹出按钮会显示,看起来很好,问题是弹出按钮内的控件无法交互(下拉列表通过JS填充)。每当我尝试单击下拉列表或按钮时,弹出按钮就会关闭。我已经尝试将弹出式div作为身体的直接子对象,因为我在其他地方看到这是一个可能的解决方案

有什么想法吗


我应该加上在WinJS操场上尝试这一点——让我感到沮丧

弹出按钮应该是document.body的直接子项。确保弹出按钮没有嵌套在其他div中。

我不知道这是否与您的问题相同,但我想我会发表评论,以防其他人也有与我相同的问题

基本上,我制作的小提琴与我的代码相似:

请注意css:

#wholeContainer {
  position: fixed;
}
因为这
整个容器
是所有东西的容器
位置:固定干扰了弹出按钮中元素的单击事件。我将其更改为“绝对”
,它再次完美地工作:)

更新小提琴:

希望对某人有所帮助:)

请参阅

基本上,问题是您需要在父级固定DIV之外定义data win control=“WinJS.UI.Menu”部分。似乎您无法定位:固定一个DIV,然后定位:固定另一个DIV,并期望弹出按钮在所有浏览器上都能工作(在IE..ha中工作)。WinJS.UI.Menu也在尝试定位:已修复

所以

<div id="aMenuBar" style="position:fixed">
  <button id="settingsButton" class="win-button">Settings</button>
</div>

<!-- this part cannot be in the fixed div above -->
<div id="settingsFlyout" data-win-control="WinJS.UI.Menu">
  <button data-win-control="WinJS.UI.MenuCommand" data-win-options="{id:alwaysSaveMenuItem',label:'Always Save Drafts',type:'toggle',selected:'true'}"></button>
</div>

设置

按钮所在的工具栏是否也是弹出型按钮?只有一个弹出式集合,因此,如果您在响应另一个即将被轻置的弹出式集合时显示changeCatFlyout,则新的弹出式集合将与旧的弹出式集合一起被解除。