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 CSIDL_PROFILE`and但 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 回答