Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vista/W7小工具';s javascript_Javascript_Windows Desktop Gadgets - Fatal编程技术网

Vista/W7小工具';s javascript

Vista/W7小工具';s javascript,javascript,windows-desktop-gadgets,Javascript,Windows Desktop Gadgets,我正在尝试编写Vista/W7小工具。在我的实验中,我想在系统上写下某些文件的修改日期。问题是,如果我想使用字符串操作函数,这个小工具就会停止写入其输出。该小工具的部分代码如下所示: function format_lmd(lmd) { // Parse something like "Sun Aug 26 17:13:22 UTC+0200" var lmdFields = lmd.split(' '); //weekday = lmdFields[0]; //mon

我正在尝试编写Vista/W7小工具。在我的实验中,我想在系统上写下某些文件的修改日期。问题是,如果我想使用字符串操作函数,这个小工具就会停止写入其输出。该小工具的部分代码如下所示:

  function format_lmd(lmd)
  {
  // Parse something like "Sun Aug 26 17:13:22 UTC+0200"
  var lmdFields = lmd.split(' ');
  //weekday  = lmdFields[0];
  //month    = lmdFields[1];
  //monthday = lmdFields[2];
  //moment   = lmdFields[3];
  //return monthday+' '+month+' '+moment;
  return lmd;
  }

  function  paintGadget()
  {   
  var fileitem = System.Shell.itemFromPath("c:\\myfile.txt");
  //canvas.addTextObject('   '+fileitem.modifyDate, 'Segoe UI', 9, 'white', text_offset, 21);
  var result = null;
  result = '   ';
  result += format_lmd(fileitem.modifyDate);
  canvas.addTextObject(result, 'Segoe UI', 9, 'white', text_offset, 21);
  }
调用split(函数格式为_lmd)似乎会停止脚本(或者更好:抛出异常)。尽管文档似乎表明split函数可以用于将字符串拆分为多个部分,但在我的例子中它不起作用

问题:

  • 如何正确使用拆分方法
  • 我以前没有使用Javascript,所以何时用“var”声明变量,何时不用,对我来说仍然是个谜。对于可以用于小工具的Javascript,有没有一个很好的介绍
  • 调试小工具的最佳方法是什么
谢谢, 帕特里克


编辑:我找到了如何为Javascript启用调试器(请参阅)。现在会弹出一个调试窗口,上面写着“预期对象”,但这对我没有帮助。

如果是日期,那么这可能会有所帮助(未测试,但只是一个指南)

您可以在数组中提供月和日的值,如果需要,只需查找它们

参考:

如果是一个日期,那么这可能会有所帮助(不是测试,而是一个指南)

您可以在数组中提供月和日的值,如果需要,只需查找它们

参考:
这是Windows桌面小工具API和System.Shell命名空间的主要问题之一。有些命令返回的类型不是由JScript本机处理的。幸运的是,现在不是这样的时候,但问题是类似的。我会找到答案的,但首先,有点旁白

您注意到,在函数中检查lmd的类型时,“日期”是结果。奇怪的是,没有原生日期类型JScript/ECMAScript-
typeof new date()
将生成“object”。原因是许多System.Shell.*方法映射到.net等效方法,结果只返回到JScript,而不需要将数据转换为JScript本机类型。微软的一个非常短视的实现

将lmd输出到调试器时,您将看到一个字符串结果,类似于:

2009年11月25日星期三11:06:30 UTC

这是因为需要字符串的函数会将非字符串参数转换为字符串。System.Debug.outputString()在这里也不例外。意识到这一点,解决方案变得清晰-强制将类型从“日期”转换为字符串:

var lmdFields = String(lmd.split(' '));
// or
var lmdFields = (lmd+"").split(' ');

//-> ["Wed","Nov","25","11:06:30","UTC","2009"]
如果要将日期转换为JavaScript日期对象,只需将其传递给date()构造函数:

var lmdFields = new Date(lmd);
System.Debug.outputString(lmdFields.toLocaleString());
//-> "25 November 2009 11:06:30"

这是Windows桌面小工具API和System.Shell命名空间的主要问题之一。有些命令返回的类型不是由JScript本机处理的。幸运的是,现在不是这样的时候,但问题是类似的。我会找到答案的,但首先,有点旁白

您注意到,在函数中检查lmd的类型时,“日期”是结果。奇怪的是,没有原生日期类型JScript/ECMAScript-
typeof new date()
将生成“object”。原因是许多System.Shell.*方法映射到.net等效方法,结果只返回到JScript,而不需要将数据转换为JScript本机类型。微软的一个非常短视的实现

将lmd输出到调试器时,您将看到一个字符串结果,类似于:

2009年11月25日星期三11:06:30 UTC

这是因为需要字符串的函数会将非字符串参数转换为字符串。System.Debug.outputString()在这里也不例外。意识到这一点,解决方案变得清晰-强制将类型从“日期”转换为字符串:

var lmdFields = String(lmd.split(' '));
// or
var lmdFields = (lmd+"").split(' ');

//-> ["Wed","Nov","25","11:06:30","UTC","2009"]
如果要将日期转换为JavaScript日期对象,只需将其传递给date()构造函数:

var lmdFields = new Date(lmd);
System.Debug.outputString(lmdFields.toLocaleString());
//-> "25 November 2009 11:06:30"

我现在没有Vista/W7要测试,但是您是否尝试过
.split(//)
?调试器窗口总是报告“预期对象”。尝试使用你的建议,但这没有帮助。谢谢。什么是
modifyDate
?你确定这是一根绳子吗?我猜
lmd
的值被传递到函数中是null。根据它是一个字符串。但是说实话,我更喜欢约会。因为我感觉到了你的痛苦;-)我现在没有Vista/W7要测试,但是您是否尝试过
.split(//)
?调试器窗口总是报告“预期对象”。尝试使用你的建议,但这没有帮助。谢谢。什么是
modifyDate
?你确定这是一根绳子吗?我猜
lmd
的值被传递到函数中是null。根据它是一个字符串。但是说实话,我更喜欢约会。因为我感觉到了你的痛苦;-)我希望这能起作用,但它仍然在“month=lmd.getMonth()+1;”行中给出错误“objectrequired”。微软的Javascript会与Mozzila的Javascript不兼容吗?我对此表示怀疑。这是标准的JS材料。由于无法深入研究lmd对象,我无法确定接下来的步骤。我希望这会起作用,但它仍然会在“month=lmd.getMonth()+1;”行上给出错误“Object required”。微软的Javascript会与Mozzila的Javascript不兼容吗?我对此表示怀疑。这是标准的JS材料。在无法深入研究lmd对象的情况下,我无法确定接下来的步骤。是的,就是这样。对不起,我只能给你+1并接受你的答案(我真的想给你+100)。谢谢你的回答。是的,就是这样。对不起,我只能给你+1并接受你的答案(我真的想给你+100)。谢谢你的回答。