我已经构建了一个基于 Web 的所见即所得编辑器,我可以从我的可可应用程序中以编程方式访问它。目前我可以在编辑器中运行脚本并从 iFrame 中检索 HTML,但我无法将文本从 NSTextView 发送到 iFrame。有任何想法吗?
编辑器在这里http://www.alexmillsdesign.com/Developer/FernEngine/
干杯亚历克斯米尔斯
我已经构建了一个基于 Web 的所见即所得编辑器,我可以从我的可可应用程序中以编程方式访问它。目前我可以在编辑器中运行脚本并从 iFrame 中检索 HTML,但我无法将文本从 NSTextView 发送到 iFrame。有任何想法吗?
编辑器在这里http://www.alexmillsdesign.com/Developer/FernEngine/
干杯亚历克斯米尔斯
我不是这方面的专家,但我过去曾编写过类似的示例代码。我采用的方法如下:在您想要更新文本插入代码的 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>
Obviously this fills in rows of data in a table, but updating text would be similar.