我正在尝试自动解析网站(安全)并使用预先填充的信息设置我的word文档。我考虑了3个步骤:
我得到了第一个工作区,并且提取脚本有效。我需要附加jquery(网站不使用它),我知道我调用并附加了两次,但我不知道如何将一个参数从javascript传递给applescript,更不用说2.
无论如何,我的问题是我在applescript中得到了空变量,但javascript部分工作得很好(我测试了它并得到了正确的值)。
感谢您提供有关如何获取findMe返回到applescript变量的javascript值的任何提示,以及是否可以让我知道如何将脚本简化为一个带有2个参数的调用,这也很棒。
to getClaimFile(needle)
tell application "Safari"
set input to do JavaScript "
(function () {
function loadScript(url, callback) {
var script = document.createElement('script')
script.type = 'text/javascript';
if (script.readyState) { //IE
script.onreadystatechange = function () {
if (script.readyState == 'loaded' || script.readyState == 'complete') {
script.onreadystatechange = null;
findMe('" & needle & "')
}
};
} else { //Others
script.onload = function () {
findMe('" & needle & "')
};
}
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
}
loadScript('https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js', function () {
//jQuery loaded
console.log('jquery loaded');
});
})();
function findMe(squery) {
return $('iframe#app_win').contents().find('iframe#app_subwin').contents().find('label:contains('+squery+')').parent().next('td').text()
}
" in current tab of window 1
end tell
return input
end getClaimFile
set claimNum to getClaimFile("Claim #:")
set fileNum to getClaimFile("File Number:")
log claimNum
log fileNum
答案 0 :(得分:0)
AppleScript中的返回值很时髦。您没有像在JavaScript中那样指定'return'语句;相反,语句中的最后一个变量只是按原样返回。
以下是您尝试执行的操作的简化版本:
to getTagName(searchterm)
tell application "Safari"
set myreturnvalue to do JavaScript "
var tags = document.querySelectorAll('." & searchterm & "');
var tag = (tags.length) ? tags[0].innerHTML : 'not found in JS';
tag; " in tab 1 of window 1
end tell
myreturnvalue
end getTagName
set myrealtag to getTagName("post-tag")
log myrealtag
set myfaketag to getTagName("foobar")
log myfaketag
如果您在访问StackOverflow页面时运行此操作,则第一个测试(myrealtag
)将返回页面上找到的具有类.post-tag
的第一个元素的名称。第二个测试(foobar
)使用在页面上找不到的搜索字符串,因此将返回“在JS中找不到”(按照上面的JS片段的指示)。
这里有一小部分返回值。 getTagName
AppleScript函数配置为返回myreturnvalue
。 myreturnvalue
是一个由JavaScript填充的变量。 JavaScript配置为返回tag
。