Передать значения переменных из дочернего XUL-окна в родительское XUL-окно с помощью JavaScript - PullRequest
0 голосов
/ 24 августа 2011

У меня есть функция для получения значений выбранного флажка из файла 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 Ответ

2 голосов
/ 24 августа 2011

Возможно, вы захотите использовать что-то вроде этого: Передача дополнительных параметров в диалог в 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;

В основном,

  1. Вы передаете параметр дочернему окну во время его открытия.

  2. Затем в дочернем окне заполните параметр значениями, которые хотите передать обратно родительское окно, а затем закройте дочернее окно.

  3. Теперь вернувшись в родительское окно, вы можете получить доступ к параметру, который вы передали дочернему элементу, и он содержит информацию, обновленную дочерним окном.

...