URL eines Links herausfinden

M

mac_in_tosh

Aktives Mitglied
Thread Starter
Dabei seit
20.05.2007
Beiträge
217
Reaktionspunkte
0
Hallo,
ich habe ein Skript, welches den ausgewählten Text in Safari in einer Variable speichert:

Code:
tell application "Safari"
	set selectedText to (do JavaScript "''+window.getSelection();" in front document)
end tell

Wie kann ich jetzt herausfinden, wie die URL des links ist, wenn ich einen ausgewählt habe??
 
Hallo,

leider funktioniert das so nicht. Du erhältst "nur" den Text. An ihm hängen nicht mehr Informationen. Deshalb kann die URL nicht herausgelesen werden.

Viele Grüße

PS: In Deinem anderen Thread habe ich Dir die Lösung geschrieben.
 
Gibt es eine andere möglichkeit, die URL des in Safari ausgewählten Links herauszufinden??
 
Moment, ich schaue gerade und habe glaube ich was.

Viele Grüße
 
Okay,

ich habe Dir was:

Code:
tell application "Safari"
	
	set linkAuswahl to do JavaScript "window.getSelection();" in front document
	set alleLinks to do JavaScript "document.links.length" in front document
	
	repeat with nLink from 1 to alleLinks
		set nLinkURL to do JavaScript "document.links[" & nLink & "].href" in front document
		set nLinkWert to do JavaScript "document.links[" & nLink & "].text" in front document
		
		if (nLinkWert contains linkAuswahl) then
			display dialog nLinkURL
			exit repeat
		end if
		
	end repeat
	
end tell

Damit funktioniert es. Gefällt mir aber nicht so gut.
Ich weiß, dass es ein Abfrage des markierten Objektes gibt. Damit sollte es viel besser funktionieren (vorallem schneller).

Ich schaue gerade noch mal nach.

Viele Grüße
 
Ja, wäre nett, aber genau das ist was ich meine!! Vielen Dank!!
 
Hab gerade noch etwas bemerkt. Wenn ich auf einer Seite in der es etwa so aussieht: ( alle Kapitel sind verlinkt)

Buch 1
Kapitel 1
Kapitel 2
Kapitel 3
Kapitel 4
Kapitel 5

Buch 2
Kapitel 1
Kapitel 2
Kapitel 3
Kapitel 4

Dann wird, wenn ich vom zweiten Buch z.B. Kapitel 3 anklicke, immer zum Kapitel 3 vom ersten Buch verlinkt.
 
Zuletzt bearbeitet:
Hallo,

ja, das stimmt. Frage bitte im Web-Entwicklungsforum nach, wie Du ein markiertes Objekt "auslesen" kannst. Ich bin der Meinung es sollte funktionieren. Leider fehlt mir hierzu das JS Know-How. (lange ist es her und vieles ist erweitert)

Wenn Du weißt, wie die Abfrage aussieht, dann sollte es kein Problem mehr mit der AS Umsetzung sein.

Viele Grüße
 
Ja okay. Vielen Dank:) !
 
onCopy Event-Handler überschreiben

Eine "saubere" Lösung kenne ich nicht.
Folgende Code überschreibt, den onCopy Event-Handler und kopiert den veränderten Text in die Zwischenablage.

----
Alternative:
onmouseover Event-Handler überschreiben und auf window.getSelection = document.links[x].text prüfen.

onmouseover=meineFunktion()
meineFunktion(){
if window.getSelection = document.links[x].text then
var URLdesMakiertenTextes=document.links[x].href
}

URLdesMakiertenTextes =do JavaScript "URLdesMakiertenTextes;"

----
Code:
property my_Lib : load script file "Mac HD:SetClipboardData_lib.app" --"http://w2lab.de/macuser.de/353095/SetClipboardData_lib.app"

set SetClipboardData to my_Lib's SetClipboardData


-- 1. test webseite
tell application "Safari"
	make new document with properties {URL:""}
	do JavaScript "document.write(\"<a href='http://text.de'>text</a>\");" in document 1
	activate
	tell application "System Events" to keystroke "a" using command down
end tell

-- 2. für alle Links onCopy Event-Handler überschreiben 
-- SetClipboardData("window.document.title+': '+this.text +' ' +this.href", 1)
SetClipboardData("this.href", 1) -- 1=Safari front document

-- 3. makierte Link in Clipboard kopieren
tell application "Safari"
	activate
	tell application "System Events" to keystroke "c" using command down
end tell

tell me to activate
set theurl to the clipboard as string
return theurl
 
Vielen Dank, aber das Programm funktioniert irgendwie nicht.
Bild 2.png
 
Hallo, ich habe noch eine Frage:

Wie kann ich mit Applescript Safari sagen, dass es den Link in die zwischenablage kopieren soll, also wie Ctrl-Click > Link kopieren?
 
Den Quelltext von SetClipboardData möchte ich hier nicht veröffentlichen.
Sie brauchen daher zusätzlich folgende Datei:
http://w2lab.de/macuser.de/353095/SetClipboardData_lib.app


1. Download SetClipboardData_lib.app

2. Pfadangabe "Mac HD:mein Ordner 1:SetClipboardData_lib.app" ändern
-- bedeutet: Startpartion heißt "Mac HD" Datei "SetClipboardData_lib.ap" ist im Ordner "mein Ordner 1" gespeichert

"Mac HD:SetClipboardData_lib.app" = Platzhalter für Pfad auf Ihrem Rechner
.. = Platzhalter für Pfad auf Ihrem Rechner

den Pfad für "SetClipboardData_lib.app" auf Ihrem Rechner erhalten sie zum Beispiel wie folgt:
a)
- Datei "SetClipboardData_lib.app" auf das SkriptEditor Fenster ziehen
- der Text "/Users/ .. /SetClipboardData_lib.app" wird eingefügt
- file durch POSIX file ersezten und nach dem Pfad as file hinzufügen
property my_Lib : load script POSIX file "/Users/ .. /SetClipboardData_lib.app" as file

oder b)
- fügen Sie in der ersten Zeile return (choose file)
- Datei SetClipboardData_lib.app auswählen
- Pfadangabe aus SkriptEditor Ergebniss Anzeige kopieren
statt "Mac HD:SetClipboardData_lib.app"
zB"Macintosh HD:Users:mac_in_tosh:SetClipboardData_lib.app"




Hallo, ich habe noch eine Frage:

Wie kann ich mit Applescript Safari sagen, dass es den Link in die zwischenablage kopieren soll, also wie Ctrl-Click > Link kopieren?

1. Safari in den Vordergrund bringen
tell application "Safari" to activate

2. Link mit der Maus auswählen bzw. makieren

3. Event Tastendruck auslösen = Funktion keystroke von "System Events" aufrufen
tell application "System Events" to keystroke "c" using command down


Wie Sie genau einer Link oder nacheinander alle Links makieren können, ist mir nicht bekannt. (möglicherweise Tab Taste?)
mit keystroke "a" makieren Sie alles.
tell application "System Events" to keystroke "a" using command down

Die geplante Interaktion von einem Applescript und Benutzereingaben in Safari habe ich nicht verstanden.
1. ich öffne Webseite in Safari
2. ich makiere Link
3. ich rufe ein Applescript auf
4. dieses Applescript kopiert Link in die Zwischenablage
5. Clipboard speichern

6. ich makiere Link
7. ich rufe ein Applescript auf
8. dieses Applescript kopiert Link in die Zwischenablage
9. Clipboard speichern
...
// erscheint mir etwas umständlich

PS:
die Funktion SetClipboardData berücksichtigt immer nur einen Link, auch wenn mehrere Links ausgewählt werden
 
Zuletzt bearbeitet:
Zurück
Oben Unten