0 votes

Écriture dans un iframe à partir de NSTextView

J'ai construit un éditeur WYSIWYG basé sur le web, auquel j'accède par programme depuis mon application cacao. Pour le moment, je suis capable d'exécuter des scripts et de récupérer le HTML de l'iFrame dans l'éditeur, mais je suis incapable d'envoyer du texte d'un NSTextView à l'iFrame. Avez-vous une idée ?

L'éditeur est ici http://www.alexmillsdesign.com/Developer/FernEngine/

Salutations Alex Mills

0voto

sbooth Points 9275

Je ne suis pas un expert dans ce domaine mais j'ai écrit un exemple de code dans le passé qui faisait quelque chose de similaire à ceci. L'approche que j'ai adoptée est la suivante : dans votre classe Cocoa où vous voulez mettre à jour le texte, insérez un code similaire à

WebScriptObject *webScriptObject = [_webView windowScriptObject];
id result = [webScriptObject callWebScriptMethod:@"setTableRows" withArguments:[NSArray arrayWithObject:fauxData]];

où fauxData est ce que vous voulez passer à JS, et dans la source JS avoir quelque chose de similaire à

var mytable = document.getElementById("myTable");
var mytbody = document.getElementById("myTbody");
var docFragment = document.createDocumentFragment();
var myNewtbody = document.createElement("tbody");   
myNewtbody.id = "myTbody";

var trElem, tdElem, txtNode;
for(var j = 0; j < row_data.length; ++j) {
    trElem = document.createElement("tr");
    trElem.className = "tr" + (j%2);

    tdElem = document.createElement("td");
    tdElem.className = "col0";
    txtNode = document.createTextNode(row_data[j].lastName);
    tdElem.appendChild(txtNode);
    trElem.appendChild(tdElem);

    tdElem = document.createElement("td");
    tdElem.className = "col4";
    txtNode = document.createTextNode(row_data[j].firstName);
    tdElem.appendChild(txtNode);
    trElem.appendChild(tdElem);

    docFragment.appendChild(trElem);
}
myNewtbody.appendChild(docFragment);
mytable.replaceChild(myNewtbody, mytbody);

et bien sûr, votre HTML devrait avoir quelque chose comme

<table id="myTable">

<thead id="myThead">
<tr>
<th>Last</th>
<th>First</th>
</tr>
</thead>

<tbody id="myTbody">
</tbody>

</table>

Évidemment, cela permet de remplir des lignes de données dans un tableau, mais la mise à jour du texte serait similaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X