0

保存されていないファイルを誰かが閉じようとしたときに、WindowsRTアプリで保存ダイアログを起動しようとしています。しかし、私は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();
}
4

2 に答える 2

1

あなたの中心的な問題は、メッセージダイアログを別のダイアログの上に表示することを結びつけていることです。ここで詳細と解決策について説明し ます。地下鉄アプリでの「アラート」の代替手段は何ですか?

ただし、フローは当然、これが発生する必要があります。ダイアログを積み重ねるのではなく、別のタイプのフローを構築することを検討することをお勧めします。

于 2013-01-09T01:35:47.377 に答える
0

これを回避する方法は、コマンドIDを設定し、のdone()関数でそれをキャッチすることのshowAsync()ようです。

function createNewFile() 
{
    if (editedSinceSave)
    {
        // Add commands and set their CommandIds 
        msg.commands.append(new Windows.UI.Popups.UICommand("Dont Save", null, 1));
        msg.commands.append(new Windows.UI.Popups.UICommand("Save File", null, 2));

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

        // Show the message dialog 
        msg.showAsync().done(function (command) {
            if (command) {
                if (command.id == 1){
                    BlankFile();
                }
                else {
                    saveFile(true, true);
                }
            }
        });
    }
}

これはエラーをスローしません。違いがないように見えるので、他の方法でエラーがスローされる理由はわかりません。

于 2013-01-08T21:50:08.677 に答える