0

私はWebベースのWYSIWYGエディターを作成しました。これは、私のcocoaアプリケーションからプログラムでアクセスします。現時点では、エディターでスクリプトを実行してiFrameからHTMLを取得することはできますが、NSTextViewからiFrameにテキストを送信することはできません。何か案は?

エディターはこちらhttp://www.alexmillsdesign.com/Developer/FernEngine/

乾杯アレックスミルズ

4

1 に答える 1

0

私はこの分野の専門家ではありませんが、これと似たようなことをするサンプル コードを過去に書いたことがあります。私がとったアプローチは次のとおりです。次のようなテキスト挿入コードを更新するCocoaクラスで

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

fauxData は JS に渡したいもので、JS ソースには次のようなものがあります。

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);

もちろん、HTMLには次のようなものが必要です

<table id="myTable">

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

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

</table>

明らかに、これはテーブル内のデータの行を埋めますが、テキストの更新も同様です。

于 2009-01-24T09:21:34.740 に答える