当有人试图关闭尚未保存的文件时,我正试图在我的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();
}
答案 0 :(得分:1)
你的核心问题是你想要在另一个上面显示一个消息对话框。我在这里讨论细节和解决方案: What is the alternative to `alert` in metro apps?
然而,你自然而然地需要这种情况发生 - 我建议考虑构建一种不同类型的流而不是堆叠对话框。
答案 1 :(得分:0)
解决这个问题的方法似乎是设置命令ID并在done()
的{{1}}函数中捕获它,就像这样
showAsync()
这不会引发任何错误。我不知道为什么这样做会抛出错误,因为它似乎没有任何不同!