Я экспериментирую с JXA и пытаюсь «портировать» небольшой скрипт, который анализирует названия треков с веб-страницы. Этот скрипт в настоящее время работает как макрос Keyboard Maestro и выполняется в текущем окне Safari:
var trackBlock = document.getElementsByClassName("track tracklist_track_title");
var trackList = [];
for (var a of trackBlock) {
trackList.push(a.innerText);
}
trackList.join("\n");
Проблема заключается в том, что моя попытка переноса работает хорошо в JXA, если doJavaScript
возвращает одну строку (переменная trackName1
содержит название дорожки):
var sfr = Application("Safari");
var trackName1 = sfr.doJavaScript('document.getElementsByClassName("track tracklist_track_title")[1].innerText', { in: sfr.windows[0].currentTab });
trackName1 // contains track name
Но если я изменю код, чтобы doJavaScript
вернул массив (как это было в исходном коде), переменная будет нулевой. Подскажите, пожалуйста, что я делаю не так?
var sfr = Application("Safari");
var trackBlock = sfr.doJavaScript('document.getElementsByClassName("track tracklist_track_title")', { in: sfr.windows[0].currentTab });
trackBlock[0].innerText; // null
Спасибо!