0

我正在使用 javascript 为我的 windows 8 应用程序显示一条弹出消息,如下所示

var msg = new Windows.UI.Popups.MessageDialog("No internet connection has been found.");
msg.commands.append(new Windows.UI.Popups.UICommand("Try again", commandInvokedHandler));
msg.commands.append(new Windows.UI.Popups.UICommand("Close", commandInvokedHandler));
msg.defaultCommandIndex = 0;
msg.cancelCommandIndex = 1;
msg.showAsync();

现在我想在一段时间后以编程方式关闭弹出消息,因为用户没有给出任何输入。

4

2 回答 2

2

我认为这种消息弹出窗口没有隐藏/关闭/取消命令。按下键盘上的退出键时会调用取消命令。这些类型的消息不用于信息目的。您应该改用“FlyOut”。

HTML:

<!-- Define a flyout in HTML as you wish -->
<div id="informationFlyout" data-win-control="WinJS.UI.Flyout">
    <p>
        Some informative text
    </p>
</div>

<!-- an anchor for the flyout, where it should be displayed -->
<div id="flyoutAnchor"></div>

JS:

    // Get an anchor for the flyout
    var flyoutAnchor = document.getElementById("flyoutAnchor"); 

    // Show flyout at anchor
    document.getElementById("informationFlyout").winControl.show(flyoutAnchor); 

要在设定的时间后关闭弹出窗口,您可以执行 setTimeout 并隐藏在您的代码中:

// execute this code after 2000ms
setTimeout(function () {

    // Fetch the flyout
    var flyout = document.getElementById("informationFlyout"); // Get the flyout from HTML

    // Check if the element still exists in DOM
    if (flyout) 
        flyout.winControl.hide(); // Dismiss the flyout

}, 2000); 

在此处阅读有关 FlyOut 弹出窗口的更多信息

于 2012-07-26T12:00:43.117 回答
1

事实上,您可以在 showAsync 方法返回的对象上调用取消,首先以这种方式调用 messageDialog:

var msg = new Windows.UI.Popups.MessageDialog("No internet connection has been found.");
var asyncOperation = msg.showAsync();

然后,您可以随时致电:

asyncOperation.cancel();

并且 messageDialog 将被关闭。

于 2014-01-06T09:25:53.547 回答