0 votes

AppleScript / Javascript : supprimer des colonnes dans Safari

Existe-t-il un moyen de supprimer toutes les instances d'une classe dans Safari en utilisant AppleScript/Javascript ?

Par exemple, je voudrais supprimer chaque instance de :

`<td class="sortable cardTypeDisplayName">

                                    Visa

                            </td>`

Je suppose que cela peut avoir un rapport avec la question, mais je suis perdu dans le script car je n'ai pas d'expérience en matière de JS.

tell application "Safari"
    set RemoveWhatIDontWant to do JavaScript "javascript:Array.from(document.getElementsByClassName('sortable cardTypeDisplayName'))
.forEach(function(v){v.removeAttribute('sortable cardTypeDisplayName');});" in document 1
end tell

UPDATE :

tell application "Safari"
    do JavaScript "document.querySelectorAll("[class=\"sortable cardTypeDisplayName\"]")
        .forEach(el => el.remove());" in tab 1 of window 1
end tell

Résultat :

Erreur de syntaxe Fin de ligne attendue mais "[" trouvé.

1voto

grg Points 181593
  • .removeAttribute(attrName) prend un nom d'attribut, pas valeur.
    Le nom de l'attribut est "class", la valeur est "sortable cardTypeDisplayName".

  • Mais cela ne résoudra pas non plus le problème. La suppression de l'attribut de l'élément ne supprime pas entièrement l'élément, mais simplement l'attribut, de sorte que votre exemple devient <td>Visa</td> - c'est-à-dire que la colonne existe toujours.

Pour supprimer tous les éléments dont l'attribut class correspond exactement à "sortable cardTypeDisplayName", vous pouvez utiliser le JavaScript suivant.

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

Ce problème est lié à votre JavaScript, et non à AppleScript. Déboguez d'abord votre JavaScript dans les outils de développement du navigateur web avant de passer à AppleScript.

Pour exécuter ce JavaScript avec AppleScript, gardez à l'esprit les guillemets qui doivent être échappés. Regardez la coloration syntaxique pour voir comment les guillemets dans le JavaScript sont analysés comme des guillemets qu'AppleScript doit utiliser sur la chaîne elle-même, plutôt que de les donner au JavaScript. Ces guillemets doivent être échappés.

tell application "Safari" to ¬
  do JavaScript "document.querySelectorAll(\"[class=\\\"module question-stats\\\"]\").forEach(el => el.remove());" ¬
    in current tab of window 1

tell application "Safari" to ¬
  do JavaScript "document.querySelectorAll('[class=\"module question-stats\"]').forEach(el => el.remove());" ¬
    in current tab of window 1

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X