AppleScript (Javascript): удалить класс, если - PullRequest
4 голосов
/ 28 апреля 2019

Как я могу удалить каждый класс в Safari, только для определенного текста?

Я знаю, что этот скрипт ниже удалит каждый класс с именем:

сортируемый itemDescription

tell application "Safari Technology Preview" to ¬
    do JavaScript ¬
        "document.querySelectorAll(\"[class=\\\"sortable itemDescription\\\"]\").forEach(el => el.remove());" in current tab of window 1

Но могу ли я добавить оператор if, чтобы удалить только класс, если текст в этом примере:

"(нежелательный"):

<td class="sortable itemDescription">

                                    (unwanted)

                            </td>

1 Ответ

3 голосов
/ 28 апреля 2019

Лямбда в пределах .forEach может быть расширена, чтобы включить дополнительное условие при выполнении удаления, чтобы проверить текст. Текстовое содержимое элемента может быть получено с помощью .textContent. Поскольку вокруг фактического текста много пробелов, .trim() может использоваться для извлечения фактического текста для сравнения.

document.querySelectorAll("[class=\"sortable itemDescription\"]")
    .forEach(el => {
        if (el.textContent.trim() === "(unwanted)") {
          el.remove();
        }
    });

AppleScript является лишним вопросом. Глядя только на JavaScript, текущий код в вопросе, о котором задают вопрос, выглядит следующим образом:

document.querySelectorAll("[class=\"sortable itemDescription\"]").forEach(el => el.remove());

Некоторое экранирование кавычек необходимо, чтобы вернуть решение в этом ответе обратно в AppleScript:

tell application "Safari Technology Preview" to ¬
    do JavaScript ¬
        "document.querySelectorAll(\"[class=\\\"sortable itemDescription\\\"]\").forEach(el => { if (el.textContent.trim() === \"(unwanted)\") { el.remove(); } });" in current tab of window 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...