0 votos

AppleScript / Javascript : eliminar columnas en Safari

¿Existe una forma de eliminar todas las instancias de una clase en safari utilizando AppleScript/Javascript?

Por ejemplo, me gustaría eliminar cada instancia de :

`<td class="sortable cardTypeDisplayName">

                                    Visa

                            </td>`

Supongo que puede tener algo que ver pero me pierdo en el script ya que no tengo experiencia con 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

ACTUALIZACIÓN :

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

Resultado :

Error de sintaxis Se esperaba el final de la línea pero se encontró "[".

0 votos

0 votos

@Daniil Importar jQuery sólo para realizar una única operación es exagerado, y no veo que ninguna de las soluciones enlazadas resuelva el problema aquí aunque se importe jQuery.

1voto

siva Puntos 23
  • .removeAttribute(attrName) toma un nombre de atributo, no valor.
    El nombre del atributo es 'class', el valor es 'sortable cardTypeDisplayName'.

  • Sin embargo, eso tampoco va a solucionar el problema. Eliminar el atributo del elemento no elimina el elemento por completo, sólo elimina el atributo, de manera que tu ejemplo se convierte en <td>Visa</td> - es decir, la columna sigue existiendo.

Para eliminar todos los elementos con un atributo de clase que coincida exactamente con 'sortable cardTypeDisplayName', puede utilizar el siguiente JavaScript.

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

Este problema es con su JavaScript, no con AppleScript. Depura primero tu JavaScript en las herramientas de desarrollo del navegador web antes de pasar a AppleScript.

Para ejecutar este JavaScript con AppleScript, tenga en cuenta las comillas que hay que escapar. Fíjate en el resaltado de sintaxis para ver cómo las comillas en el JavaScript están siendo analizadas como comillas para que AppleScript las utilice en la propia cadena, en lugar de dárselas a JavaScript. Estas comillas deben escaparse.

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

0 votos

Gracias, eso funciona perfectamente en la consola de Safari. Me siento estúpido por preguntar, pero ¿cómo puedo integrar esto con AppleScript, siempre me da un error al intentar compilar (actualizar mi post con mi error)

0 votos

@Kevin Cuidado con las comillas, necesitan escaparse - ver edición

0 votos

@grg, no soy un experto en JavaScript... ni mucho menos; sin embargo, suelo utilizar comillas simples siempre que puedo para no tener que escapar de las comillas dobles... ¿se puede aplicar esto aquí?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X