2016-12-03 1 views
0

À ce stade, je suis sûr que c'est quelque chose de simple que je suis absent mais je ne peux pas pour la vie de moi comprendre.InDesign CC 2017 ExtendScript - Impossible d'écraser le texte dans TextArea

Travailler sur un script InDesign qui prend le texte transmis au script et l'écrit dans la zone de texte sélectionnée.

insertButton.onClick = function(){ 
    var postIndex = postList.selection.index; 

    var postContent = posts[postIndex].content.rendered; 

    $.writeln(app.selection[0].parentStory.contents); 

    app.selection[0].parentStory.contents = postContent; 

    $.writeln(app.selection[0].parentStory.contents); 

    myWindow.close(); 
} 

J'ai confirmé que la fonction est appelée se correctement, que postContent existe et est ce que je pense que ce soit et que le premier appel writeln décharges la valeur actuelle du TextArea. La deuxième .writeln de $ ne se déclenche, donc je sais que l'erreur est

app.selection[0].parentStory.contents = postContent; 

est-il un moyen mis à jour pour définir le contenu TextArea que je ne l'ai pas trouvé dans la documentation?

Merci d'avance!

Répondre

0

Lorsque le débogage a été activé dans ExtendScript Toolkit, j'ai pu trouver l'erreur d'être jeté:

"Impossible de gérer la demande car une boîte de dialogue modale ou une alerte est active"

Cela faisait référence à la boîte de dialogue que j'ai ouverte lorsque j'ai lancé le script.

Le fait de retarder l'insertion de texte jusqu'à ce que la boîte de dialogue soit fermée a résolu le problème.

insertButton.onClick = function(){ 
     var postIndex = postList.selection.index; 

     postContent = posts[postIndex].content.rendered; 

     postContent = sanitizePostContent(postContent); 
     // The 1 here is the result that tells our code down below that 
     // the window has been closed by clicking the 'Insert' button 
     myWindow.close(1); 
    } 

    var result = myWindow.show(); 

    // If the window has been closed by the insert button, insert the content 
    if (result == 1) { 
     app.selection[0].parentStory.contents = postContent; 
    } 
+0

Donc, est fait avec succès? – Cashmirek

0

... postContent existe et est ce que je pense que ce soit ...

Indesign attend une chaîne ici -> est-ce que vous attendez ainsi?

Qu'est-ce qu'une sélection d'entrée? texte? textFrame?

Vous pouvez

alert(postContent.construction.name) 

pour assurer ce que vous avez

Jarek

+0

app.selection [0], quand alerté, me donne [TextFrame objet] Essayer de comprendre ce que le Le type de postContent est, l'alerte que vous m'avez donnée n'alerte rien. Existe-t-il un meilleur moyen de voir les erreurs lorsque le script est en cours d'exécution? –

+0

typeof postContent renvoie une chaîne, c'est ce à quoi je m'attendais. –

+0

Même en insérant une chaîne simple comme app.selection [0] .parentStory.contents = "chaîne de test"; échoue. –

1

Je pense que votre problème est que votre fenêtre est modale, ce qui empêche toute interaction avec les objets inDesign. Vous devez quitter la boîte de dialogue d'abord afin de modifier les objets:

var w = new Window('dialog'); 
 
var btn = w.add('button'); 
 
btn.onClick = function() { 
 
\t w.close(1); 
 
} 
 
if (w.show()==1){ 
 
\t //"InDesign is no longer in modal state. So you can modify objects…") 
 
}

+0

Correct, voir ma réponse ci-dessus. –