关闭windows ui消息弹出窗口

时间:2012-07-26 06:56:30

标签: windows-8 winjs

我正在使用下面的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();

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

2 个答案:

答案 0 :(得分:3)

我认为没有针对那种消息弹出的hide / dismiss / cancel命令。按下键盘上的转义键时会调用cancel命令。这些消息不是用于信息目的。你应该使用“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-popups here

答案 1 :(得分:1)

有一个取消,你可以调用showAsync方法返回的对象,首先以这种方式调用messageDialog:

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

然后随时可以致电:

asyncOperation.cancel();

并且messageDialog将被解雇。