0

数週間前にこの質問をしましたが、最近戻ってきて解決しました。次のような非表示の入力があります。

                <input style="display:none;" class="fileDialog" type="file" nwworkingdir="C:\Users\" nwsaveas/>

これにより、 に指定されたディレクトリで保存ダイアログが開きますnwworkingdir。デフォルトの場所をユーザーのPicturesディレクトリにしたいのですが、javascript を使用して動的にシステム ユーザー名を取得するのに問題があります。パスは通常C:\Users\USERNAME\Pictures. I have tried constants such asssfMYPICTURES andCSIDL_PROFILE` ですが、javascript がそれらを認識しないか、間違って使用しているため、ユーザー名が必要です。

プロジェクトは node-webkit にあるため、javascript、node.js、または node-webkit API を使用したソリューションが機能するはずです。

4

1 に答える 1

2

将来の読者のための解決策:

「screen_shot.js」の Node.js 関数:

exports.getUserHome = function() {
    return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}

index.html のヘッダー js:

   $(document).ready(function() {
       var sc= require('screen_shot');
       $('.fileDialog').each(function(i) {
           $(this).attr('nwworkingdir', sc.getUserHome() + '\\Pictures');
       });
   });

                var sc= require('screen_shot');
            function wait(e) {
                var page = $(e).closest('[data-role="page"]');
                $('#close-popup').click();
                page.find('.fileDialog').click();
            }

            function screen_shot(fn) {
                html2canvas($('body'), {
                    onrendered: function(canvas) {
                    var img = canvas.toDataURL("image/png").split(',')[1];
                    sc.buildFile(fn, img);
                  }
                });
            }

            $('["..."]').live("pagecreate", function() {
                $(this).find('.fileDialog').change(function() {screen_shot($('.fileDialog').val() + '.png');});
            });

            $('[id^="..."]').live("pagecreate", function() {
                $(this).find('.fileDialog').change(function() {screen_shot($('.fileDialog').val() + '.png');});
            });

            $('[id^="..."]').live("pagecreate", function() {
                $(this).find('.fileDialog').change(function() {screen_shot($('.fileDialog').val() + '.png');});
            });

ダイアログとボタン:

                <input style="display:none;" class="fileDialog" type="file" nwworkingdir="" nwsaveas/>
                <a href="#" onclick="wait(this);" data-role="button" data-theme="j">Save As</a>
于 2013-07-23T19:33:12.117 に答える