将Javascript HTML收藏从Safari导入Applescript

mi7gmzs6  于 2022-11-20  发布在  Java
关注(0)|答案(1)|浏览(130)

我有下面的代码应该可以工作。我只是想把所有的“img”元素从一个页面放到AS中的一个列表中,这样我就可以在这个列表上工作了。

tell application "Safari"
set theWindow to front window
    set theTab to current tab of theWindow
    set theURL to URL of theTab
    set asImages to (do JavaScript "theSearch = document.getElementsByTagName(\"img\");
            theImages = [].slice.call(theSearch);
            theImages" in theTab) 
end tell

如果我进入

theSearch = document.getElementsByTagName("img");
theImages = [].slice.call(theSearch);
theImages

在Safari的控制台中运行它是有效的。但是当我在Safari的“do javascript”命令中运行上面的代码时,我什么也没有得到,变量asImages根本没有创建。我已经尝试了我能想到的所有方法,都没有用。我希望有一双新眼睛的人能很快发现我做错了什么。TIA

kjthegm6

kjthegm61#

数组应该作为文本类型的列表返回到AppleScript(在本例中,JXA的src会这样做)。还需要重复循环:

set JXAscript to "
function imageLinks()    //this defines my own function 
{
theSearch = document.getElementsByTagName('img');
var arr = [], theImages = [].slice.call(theSearch);
for(var i = 0; i < theImages.length; i++) {arr.push(theImages[i].src)}
return arr
}
imageLinks()        // this calls the defined function 
"

tell application "Safari" to ¬
    do JavaScript JXAscript in (get current tab of front window)

相关问题