Hans,
danke für die Vorlage.
Hier ein alternativer Ansatz:
// textOnly.jsx
Object.prototype.isText = function()
{
switch(this.constructor.name)
{
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
return true;
default :
return false;
}
}
if ((app.documents.length ==0) || (app.selection.length == 0))
exit();
var mySel = app.selection[0];
if (mySel.isText()) {
var tmpFrame = app.activeDocument.textFrames.add({contents:mySel.contents});
tmpFrame.parentStory.texts[0].select();
app.copy();
tmpFrame.remove();
mySel.select();
}
else if (mySel.constructor.name == "InsertionPoint") {
app.pasteWithoutFormatting()
}
Das isText()-Objekt habe ich mir von Dave Saunders geliehen. ;-)
Im obigen Ansatz wird der Inhalt der Auswahl dem temporären Textrahmen direkt zugewiesen (ohne copy & paste). Anschließend wird der Inhalt des temporären Textrahmens in die Zwischenablage kopiert und die ursprüngliche Auswahl wieder hergestellt.
Das Einfügen funktioniert wie bei Dir.
Auf das try-Kommando habe ich verzichtet.
Gibt es tatsächlich eine Fehlermeldung, wenn beim Versuch, etwas einzufügen, nichts in der Zwischenablage ist? Um dies zu überprüfen wollte ich meinen Rechner nicht extra neu starten (kann man die Zwischenablage auch anders auf null setzen?).
Was ich bei Deinem Ansatz nicht verstehe:
Warum fügst Du das Zeichen "s" in den temporären Textrahmen ein?
Um es hinterher auszuwählen und den Inhalt der Zwischenablage in die Auswahl reinzukopieren? Dazu würde es ausreichen, wenn Du den insertionPoint[0] des temporären Textrahmens auswählen würdest.