从NSTextView写入iframe

时间:2009-01-24 06:02:45

标签: javascript cocoa webkit

我已经构建了一个基于Web的WYSIWYG编辑器,我可以从我的cocoa应用程序中以编程方式访问它。目前我能够在编辑器中运行脚本并从iFrame中检索HTML,但我无法将文本从NSTextView发送到iFrame。有什么想法吗?

编辑在这里http://www.alexmillsdesign.com/Developer/FernEngine/

干杯 亚历克斯米尔斯

1 个答案:

答案 0 :(得分: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>

显然,这会填充表格中的数据行,但更新文本会类似。