Windows 8 Metro Settings Flyouts 似乎不适用于 Javascript?

Posted

技术标签:

【中文标题】Windows 8 Metro Settings Flyouts 似乎不适用于 Javascript?【英文标题】:Windows 8 Metro Settings Flyouts don't seem to work in Javascript? 【发布时间】:2012-09-21 05:22:44 【问题描述】:

我最近一直在尝试为 Windows 8 创建 Metro 应用程序并尝试使用设置弹出窗口。

所以我关注了 msdn 快速入门:http://msdn.microsoft.com/en-us/library/windows/apps/hh780611.aspx

但是,我不能让它工作。

这是我添加设置弹出​​窗口的部分:

function setupSettings() 
    app.onsettings = function (e) 
        e.detail.applicationcommands =  'serv_changer':  title: 'Change Server', href: 'settings.html'  ;
        WinJS.UI.SettingsFlyout.populateSettings(e);
    

当我按下一个按钮时,函数 setupSettings 只被调用一次(所以我可以确保它只被执行一次)

这是我的问题:按下按钮后,“更改服务器”链接确实出现了。然而,当我点击它时,什么也没有发生,侧窗只是淡出。

这是我尝试过的事情,所以我知道这不是其中之一:

不是文件丢失。我试图放置一个不存在的不同文件,并引发异常并且程序崩溃。在这里,它不会崩溃。 HTML 编码正确,因为我尝试将 settings.html 替换为 Microsoft 的示例设置文件之一。

我无法弄清楚为什么它不起作用。

有人可以帮忙吗(如果需要我可以提供更多代码)?

谢谢。

【问题讨论】:

【参考方案1】:

在您的 settings.html 页面中,确保 data-win-control 声明包括设置 commandId 的名称 - 在线示例中似乎缺少此内容。

例如。

如果你的js文件声明命令为:

e.detail.applicationcommands =  'serv_changer':  title: 'Change Server', href: 'settings.html'  ;

...然后确保您的 settings.html 文件引用“serv_changer”:

<div data-win-control="WinJS.UI.SettingsFlyout" data-win-options="settingsCommandId:'serv_changer', width:'wide'">

【讨论】:

【参考方案2】:

在我的应用程序中,我的 href 中有斜杠。所以像这样的href:'/settings.html'

在你的 settings.html 页面上确保你有这个 data-win-control="WinJS.UI.SettingsFlyout"

【讨论】:

【参考方案3】:

替换你的js函数

function setupSettings() 
    app.onsettings = function (e) 
        e.detail.applicationcommands =  'serv_changer':  title: 'Change Server', href: 'settings.html'  ;
        WinJS.UI.SettingsFlyout.populateSettings(e);
    

用这个:

function setupSettings(e) 
        e.detail.applicationcommands =
        
            "serv_changer":
            
                title: "Change Server",
                href: "/settings.html"
            
        ;
        WinJS.UI.SettingsFlyout.populateSettings(e);
    

并确保在您的 settings.html 文件中引用了 serv_changer

<div data-win-control="WinJS.UI.SettingsFlyout" data-win-options="settingsCommandId:'serv_changer'">

【讨论】:

以上是关于Windows 8 Metro Settings Flyouts 似乎不适用于 Javascript?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 8 应用商店应用程序 (Metro) 是不是在 Windows 7 或 XP 中运行?

下拉选择控件 - Windows 8 Metro - XAML

无法消除 Windows 8 Metro 'ListView' 中 Tiles 之间的填充/边距

Windows 8 Metro 应用程序键盘位置更改

在 Windows 8/Metro/Store 中为 RectangleGeometry(在 Image.Clip 中)设置动画

Google Places API 和 Windows 8 Metro Style 应用程序