Ich brauche ein Skript, um jede Registerkarte in Safari zu öffnen, wenn ich "valueIneed" von einer internen Website erhalte
Hier ist das HTML-Tag
<td class="orderDetails">
<p class="details">
(My Certificate)
</p>
Hier ist, was ich versucht habe, aber das schlägt fehl
tell application "Safari"
do JavaScript "
var forgiveStatus = document.querySelector('class[details\"(My Certificate).innerHTML;
" in current tab of first window
set checkvalue to (do JavaScript "theStatus;" in current tab of first window) as string
end tell
Für weitere Informationen könnte es mehrere Instanzen desselben Tags geben, und ich muss jedes in einem neuen Tab öffnen oder noch besser nacheinander darauf klicken
Sie haben keine Anführungszeichen oder Klammern geschlossen. Sie benötigen die folgenden vier Zeichen.
var theStatus = document.querySelector('class[details="(valueIneed)"]')
^^^^
Das ist jetzt syntaktisch korrektes JavaScript. Ich bezweifle immer noch, dass es das tut, was Sie brauchen, aber ohne das DOM der Seite, auf der Sie dies ausführen, und eine vollständige Problembeschreibung zu sehen, kann ich es nicht mit Sicherheit sagen.
Angesichts der Aktualisierung Ihrer Frage mit einem HTML-Snippet funktioniert der Code, den Sie versuchen, nicht. Verwenden Sie das folgende JavaScript, um den inneren HTML-Code des Elements abzurufen:
document.querySelector("td.orderDetails .details").innerHTML;
property tmp : "~/Desktop/safarihtml.html"
set htmls to {}
tell application "Safari" to tell window 1 to if exists then ¬
set htmls to do JavaScript ¬
"Array.from(document" & ¬
" .getElementsByClassName('details'))" & ¬
" .map(x=>x.innerHTML);" in current tab
repeat with html in htmls
newTabWithHTML(html)
end repeat
on newTabWithHTML(html)
local html
set furl to URL of tmpfile()
set eof of (tmpfile() as alias) to 0
write html to (tmpfile() as alias) as «class utf8»
tell application "Safari" to tell ¬
(a reference to window 1)
if not (exists) then make new document
set current tab to make new ¬
tab with properties ¬
{URL:furl}
repeat until name of current tab ¬
≠ "Untitled"
delay 1
end repeat
end tell
delete tmpfile()
end newTabWithHTML
on tmpfile()
tell application "System Events"
set f to a reference to the file tmp
if not (exists f) then (make new file ¬
with properties {name:tmp})
return f
end tell
end tmpfile
Mateusz Szlosek
querySelector
der Funktion. Es scheint mir, dass es dort keine schließende Klammer gibt. Hier sind Beispiele für die richtige Verwendung: developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorMateusz Szlosek
<p class="details">
In diesem Fall müssen Sie anrufen, um den Wert von zu erhaltendocument.querySelector(".details").innerHTML