Передать значения переменных из дочернего XUL-окна в родительское XUL-окно с помощью JavaScript
У меня есть функция, чтобы получить значения выбранного флажка из файла xul (скажем, tree.xul). В другом файле XUL есть текстовое поле, в которое я хочу передать значения (значения меток) выбранного флажка (скажем, textbox.xul).
Первоначально я открываю свой файл "tree.xul" из файла "textbox.xul". Когда я выбираю значения флажка и нажимаю кнопку, чтобы передать значения в другой файл xul ("textbox.xul").
У меня есть текстовое поле в файле "textbox.xul", я хочу передать значения этого флажка.
<textbox id="ali" value=""/>
<button label="Contacts" onclick="DisplayContacts();"/>
В моем скрипте я пытаюсь так, но это не работает, а также я включил этот небольшой фрагмент кода функции
window.close();
закрыть окно ("tree.xul") после передачи значений.
Нужно ли использовать массив для хранения всех значений переменной?
Я пытаюсь использовать объяснение из диалога Mozilla, но оно не работает.
function get() { // check the alignment on a number of cells in a table.
var table = document.getElementById("box");
var cells = table.getElementsByTagName("checkbox");
for (var i = 0; i < cells.length; i++)
{
var cell = cells[i];
if(cell.checked) {
alert(cell.getAttribute("label"));
var x = cell.getAttribute("label");
x = window.arguments[0];
// or cell.label
}
}
window.close();
}
Это код для значений флажка, создаваемых динамически:
function choose()
{
//alert('hi');
var tree = document.getElementById('myTodoListTree');
for (var i = 0; i < tree.view.rowCount; i++) {
if (tree.view.getCellValue(i, tree.columns.getColumnAt(0)) == 'true'){
var empty = " ";
var contact = (tree.view.getCellText(i, tree.columns.getNamedColumn("name"))+ empty+
tree.view.getCellText(i, tree.columns.getNamedColumn("lastname"))+ empty+ "Contacts:");
var ggmail = tree.view.getCellText(i, tree.columns.getNamedColumn("gmail"));
var yyahoo = tree.view.getCellText(i, tree.columns.getNamedColumn("yahoo"));
var existingEl = document.getElementById('box');
var capt = document.createElement('groupbox');
existingEl.appendChild(capt);
var captionEl = document.createElement('caption');
capt.appendChild(captionEl);
captionEl.setAttribute('label', contact );
captionEl.setAttribute('style', 'color: blue;');
var existing = document.getElementById('box');
var checkbox = document.createElement('checkbox');
capt.appendChild(checkbox);
checkbox.setAttribute('label', ggmail );
checkbox.setAttribute('style', 'color: green;');
var existing = document.getElementById('box');
var checkbox = document.createElement('checkbox');
capt.appendChild(checkbox);
checkbox.setAttribute('label', yyahoo);
checkbox.setAttribute('style', 'color: green;');
}
}
return arr;
}
Здесь пользователь устанавливает флажок в файле "tree.xul", и у меня есть кнопка ("function get()"), чтобы добавить значения в текстовое поле в окне "texbox.xul".
Это функция для открытия tree.xul из файла text-box.xul:
function DisplayContacts()
{
var returnValues = { out: null };
window.openDialog("chrome://hello/content/sundayevening2.xul","sundayevening2","", returnValues);
}
Пожалуйста, помогите мне передать значения в текстовое поле в другом окне XUL.
Благодарю вас.
1 ответ
Вы можете использовать что-то вроде этого: Передача дополнительных параметров в диалог в XUL
Это обеспечивает простой способ передачи значений через файлы XUL.
Для вашей проблемы вы можете сделать что-то подобное в textbox.xul. Это откроет tree.xul вместе с дополнительным параметром returnValues:
var returnValues = { out: null };
window.openDialog("tree.xul", "tree", "modal", returnValues);
Заметка modal
является обязательным.
Затем в вашем tree.xul сохраните все значения (давайте назовем его x), которые вы хотите передать в textbox.xul, как показано ниже:
window.arguments[0].out = x
Примечание window.argument[0] ссылается на returnValues
Теперь вы можете получить доступ к значениям x (которые являются именами меток в вашем случае) в textbox.xul следующим образом:
var labels = returnValues.out;
В принципе,
Вы передаете параметр дочернему окну во время его открытия.
Затем в дочернем окне заполните параметр значениями, которые хотите передать обратно в родительское окно, а затем закройте дочернее окно.
Теперь вернувшись в родительское окно, вы можете получить доступ к параметру, который вы передали дочернему элементу, и он содержит информацию, обновленную дочерним окном.