Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

345
Visualizações
AppleScript: JavaScript devuelve el valor faltante

El siguiente script se usa para hacer clic en un botón para cargar una fecha en nuestro sitio web y luego obtener el valor de esa fecha.

Luego debería devolver ese valor de fecha, que se usará en algunas comparaciones más adelante. Sin embargo, cuando registro doJavaStuff y emptyDate, ambos regresan como "(*missing value *)". El cuadro de diálogo de visualización para la fecha vacía también devuelve "msng".

¿Por qué no se devuelve el resultado de do JavaScript?

Revisé varios artículos y fuentes y probé varias sugerencias, pero nada funcionó. Por ejemplo, intenté configurar la segunda línea de do JavaScript en una variable y devolver esa variable, pero eso de alguna manera hizo que la variable AppleScript no estuviera definida.

Soy relativamente nuevo en AppleScript, así que tal vez me esté perdiendo algo obvio.

 global emptyDue, serviceDate, doJavaStuff set emptyDue to " " set doJavaStuff to " " set serviceDate to "2021-11-30" on isEmptyDue() tell application "Safari" to tell document 1 set doJavaStuff to do JavaScript "document.getElementById('trgUseNext').click(); #clicks button to load date. document.getElementById('inspDate').value;" --gets the value of date return doJavaStuff end tell end isEmptyDue set emptyDate to isEmptyDue() display dialog emptyDate log doJavaStuff log emptyDate
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Pude duplicar su problema usando un elemento que está en esta página de StackOverFlow ( post-id ), usando esta versión simplificada de su secuencia de comandos:

 on isEmptyDue() tell application "Safari" to tell document 1 set doJavaStuff to do JavaScript "document.getElementById('post-id').value" return doJavaStuff end tell end isEmptyDue set emptyDate to isEmptyDue() display dialog emptyDate

El valor de retorno es, como notó, "msng".

El problema parece ser que AppleScript está perfectamente feliz de tener nada más que texto citado en su propia línea, y también está perfectamente feliz de ejecutar do JavaScript sin script. Es decir, el código tal como lo presentó no ejecuta ningún JavaScript: llama a do JavaScript sin nada, y luego la siguiente línea es una cadena de texto que AppleScript ignora.

Si combino las líneas para que sean una sola línea en lugar de dos, display dialog emptyDate muestra el valor esperado de 8 dígitos del post-id del elemento en esta página de StackOverFlow (que se encuentra al ver la fuente).

 on isEmptyDue() tell application "Safari" to tell document 1 set doJavaStuff to do JavaScript "document.getElementById('post-id').value" return doJavaStuff end tell end isEmptyDue set emptyDate to isEmptyDue() display dialog emptyDate

Eso fue extrañamente difícil de rastrear porque ninguno de los "errores" proporcionó un error obvio: do JavaScript sin ningún texto no es un error; en cambio, devuelve una cadena críptica, "msng", que sospecho pero no sé significa "faltante", y una cadena por sí sola en una línea tampoco es un error. Entonces parece que está haciendo algo y no funciona, en lugar de no hacer nada y no funcionar.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda