JavaScript:AppleScript Link bauen mit Text aus div-Element

Ich poste ja den AppleScript-Quellcode hier immer in so einem Div-Elementen, das ab einer gewissen Größe einen Scroll-Balken bekommen.
Zudem wählt ein Klick auf den besagten Container den kompletten Inhalt aus und weil ich copy&paste eh schon so oft mache, gibt es dazu noch einen Link “Code im Script-Editor öffnen”.

Code zum markieren einmal anklicken Code im Skript-Editor öffnen

display dialog “Hallo, ich bin ein Dialog voller Sonderzeichen!\”§$%&/()=?

und Umlaute: ÖÄÜöää

Hm, fällt mir sonst noch etwas ein… ∂†ΩƒΩ©¨ªºø{|Ω®[€¢€‚∂®çƒ©√∫ª~º∆øπ@•∞œ@”


Um diesen Link geht es nun, den baue ich mir nämlich via JavaScript und da die Routine, die ich dazu geschrieben hatte, etwas buggy war, jetzt aber nach einer kleinen Anpassung anscheinend endlich auch mit allen Sonderzeichen und Umlauten zu funktionieren scheint, hier der Code dazu:
function buildAppleScriptLink() {
var txt = '';
if (window.getSelection)
{
txt = window.getSelection();
}
else if (document.getSelection)
{
txt = document.getSelection();
}
else if (document.selection)
{
txt = document.selection.createRange().text;
}
else return;
window.open(("applescript://com.apple.scripteditor?action=new&script=" + (new String(txt)).replace(/\"/g,'%22').replace(/\n/g,'%0D'))).close();
window.getSelection().removeAllRanges();
}

Das Ding wird nach eine anderen Routine aufgerufen (selectThis(this)), die den Inhalt des “Code-Divs” auswählt. Der Text, also nicht der HTML-Quellcode (innerHTML) wird dann zu einem AppleScript-Link umformatiert (Anführungszeichen und Zeilenumbrüche werden ersetzt gegen URL-Konforme Escape-Sequenzen) und dieser Link wird via JavaScript dann auch gleich in einem
neuen Fenster aufgerufen, was dann zumindest auf einem Mac, den AppleScript-Editor öffnet. Meine Tests unter 10.6.2 und Safari (4.0.5) waren bisher allesamt erfolgreich. Sollte jemand noch eine Idee zu einer Verbesserung des Codes haben, bitte in die Comments. Ich denke das sollte aber alles Funktionieren, sofern die Seite vom Encoding auf UTF-8 steht.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Leave a Reply