Сделал снимок в решении на основе iframe, которое использует поле IFrame для чтения и сохранения значений, вводимых в моем редакторе элементов. Его нужно немного почистить, и это похоже на взлом интерфейса, но, похоже, сейчас работает.
В моем редакторе предметов:
jQuery(function () {
var parentScForm = window.parent.scForm;
parentScForm.myItemEditor = window;
});
function myGetValue(field) {
var values = [];
jQuery('#myForm input[@name="' + field + '"]:checked').each(function () {
values.push(jQuery(this).val());
});
var value = values.join('|');
return value;
}
В моем поле Iframe:
function scGetFrameValue() {
var parentScForm = window.parent.scForm;
if (typeof (parentScForm.myItemEditor) != "undefined") {
if (typeof (parentScForm.myItemEditor.myGetValue) != "undefined") {
return parentScForm.myItemEditor.myGetValue("myLists");
}
}
return null;
}
Теоретически, я мог бы иметь несколько полей в элементе, которые «делегируются» редактору элементов таким образом - работая с сохранением редактора содержимого, а не пытаясь бороться с ним. Мне немного неловко по поводу того, чтобы «путешествовать автостопом» по scForm для связи между моими страницами - возможно, лучше проконсультироваться с нашим постоянным хакером Javascript.
Есть комментарии к решению?
РЕДАКТИРОВАТЬ: В блоге больше об этом решении