我一直在尝试通过XPCOM执行AppleScript代码,但无论我做什么,它似乎都无法工作,观察者告诉我,该过程完成没有问题,但没有任何反应。
var processArgs = ['-e','\'tell application "iTunes"\'','-e','\'activate\'','-e','\'end tell\''];
var file = Cc["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
file.initWithPath( '/usr/bin/osascript');
var process = Cc["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init( file );
var observer = {
observe: function( subject, topic ) {
SiteFusion.consoleMessage('DONE ' + topic);
}
}
process.runAsync( processArgs, processArgs.length, observer );
控制台中的输出是“DONE process-finished'它应该有用,有谁知道为什么这个脚本拒绝打开iTunes?
答案 0 :(得分:0)
原因是您在参数中使用了转义的单引号,因此您实际生成的AppleScript如下所示:
<xsl:template match="photoUrls"/>
这显然无效。相反,您的参数应如下所示:
'tell application "iTunes"'
'activate'
'end tell'
或者,
const processArgs = ['-e', 'tell application "iTunes"', '-e', 'activate', '-e', 'end tell'];
或者,
const processArgs = ['-e', `
tell application "iTunes"
activate
end tell`];