【发布时间】:2011-04-29 08:48:37
【问题描述】:
我正在尝试从 Snow Leopard 上的简单仪表板小部件访问命令行。我的目的是从我调用的命令行脚本中填充小部件的内容。 This should be possible。
每次显示小部件时,我都会使用它的 onshow 回调调用脚本:
if (window.widget) {
widget.onshow = onshow;
}
function onshow() {
document.getElementById("mydynamicarea").innerHTML = widget.system("/usr/bin/id -un", null).outputString;
}
上面我试图使用一个简单的命令来显示我的用户名来测试命令行访问。这不起作用,小部件只显示我在 HTML 上的静态文本:
<div id="mydynamicarea">No data available</div>
如果我使用静态字符串而不是 widget.system 调用,同样的 Javascript 也可以工作:
if (window.widget) {
widget.onshow = onshow;
}
function onshow() {
document.getElementById("mydynamicarea").innerHTML = "This text is actually shown on widget";
}
当我查看控制台时,我可以看到以下错误消息:
TypeError: Result of expression 'widget.system' [undefined] is not a function.
我已经在 info.plist 中配置了命令行访问:
<key>AllowSystem</key>
<true/>
知道我做错了什么吗?
【问题讨论】:
-
您是否尝试在更改 Info.plst 后重新启动 Daschode? Dashcode 有时会做一些疯狂的事情。
-
我正在通过双击 Finder 上的 MyWidget.wdgt 并将其安装到仪表板进行测试。感谢您提供使用 Dashcode 的提示。小部件在那里工作!我想我必须重新启动 OSX 才能使其在 Dashboard 上运行,或者有什么方法可以仅重新启动 Dashboard?
-
您可以使用
killall Dock终止仪表板进程。它将自动重新启动。
标签: javascript macos widget dashboard