使用Javascript在Windows应用商店应用中拒绝访问错误

时间:2013-01-08 21:50:09

标签: javascript windows-8 windows-runtime windows-store-apps

当有人试图关闭尚未保存的文件时,我正试图在我的Windows RT应用程序中启动保存对话框。但是,我一直收到0x80070005 - JavaScript runtime error: Access is denied错误

这是我正在使用启动消息对话框的代码。当选择“不保存”(并运行BlankFile())时,一切运行正常。但是,当您选择“保存文件”时,它会在尝试运行.pickSaveFileAsync()

时抛出拒绝访问错误
function createNewFile() 
{
    if (editedSinceSave)
    {
        // Create the message dialog and set its content 
        var msg = new Windows.UI.Popups.MessageDialog("Save this file?", 
            "Save Changes");

        // Add commands 
        msg.commands.append(new Windows.UI.Popups.UICommand("Don't Save", 
            function (command) {
                BlankFile();
            }));

        msg.commands.append(new Windows.UI.Popups.UICommand("Save File", 
            function (command) {
                //saveFile(true, true);
                testPop("test");
            }));

        // Set the command that will be invoked by default 
        msg.defaultCommandIndex = 2;

        // Show the message dialog 
        msg.showAsync();
    }
}

function testPop(text) {
    var msg = new Windows.UI.Popups.MessageDialog(text, "");
    msg.showAsync();
}

2 个答案:

答案 0 :(得分:1)

你的核心问题是你想要在另一个上面显示一个消息对话框。我在这里讨论细节和解决方案: What is the alternative to `alert` in metro apps?

然而,你自然而然地需要这种情况发生 - 我建议考虑构建一种不同类型的流而不是堆叠对话框。

答案 1 :(得分:0)

解决这个问题的方法似乎是设置命令ID并在done()的{​​{1}}函数中捕获它,就像这样

showAsync()

这不会引发任何错误。我不知道为什么这样做会抛出错误,因为它似乎没有任何不同!