Windows 8的地铁设置弹出按钮似乎并不在JavaScript中工作吗?(Windows 8 M

2019-09-23 05:31发布

我最近一直在试图建立一个Metro应用的Windows 8,并试图使用设置弹出。

所以我也跟着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。

我有麻烦弄清楚为什么它不工作。

可能有人帮助(如果需要的话我可以提供更多的代码)?

谢谢。

Answer 1:

在你settings.html页,确保数据双赢的控制声明包括设置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'}">


Answer 2:

我的应用程序,我在我的HREF斜线斜线。 所以像这样的href:“/settings.html”

此外,您的settings.html页面上确保你有这个数据双赢的控制=“WinJS.UI.SettingsFlyout”



Answer 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);
    }

并且确保serv_changer在你settings.html文件中引用:

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


文章来源: Windows 8 Metro Settings Flyouts don't seem to work in Javascript?