Почему заполнение нового окна из div удаляет div в исходном документе? - PullRequest
0 голосов
/ 14 августа 2011

В последние дни у меня большая проблема с заполнением окна (окно Resizeable-Draggable Prototype-UI) содержимое с помощью Prototype. Я наконец нашел рабочий пример того, что я пытаюсь сделать, но он использует своего рода «Плагин Windows» для прототипа, который я не использую, поэтому я просто хочу спросить, как скомпилировать их код, чтобы соответствовать нормальному прототипу .

То, что я пытаюсь сделать, это иметь окно с содержимым, извлеченным из DIV в теле, и проблема в том, что после того, как я открываю окно один раз - div удаляется, и я не могу повторно открыть окно .

Вот их рабочий код:

if (contentWin != null) {
  Dialog.alert("Close the window 'Test' before opening it again!",{width:200, height:130}); 
}
else {
  contentWin = new Window({maximizable: false, resizable: false, hideEffect:Element.hide, showEffect:Element.show, minWidth: 10, destroyOnClose: true})
  contentWin.setContent('test_content', true, true)
  contentWin.show();    

  // Set up a windows observer, check ou debug window to get messages
  myObserver = {
    onDestroy: function(eventName, win) {
      if (win == contentWin) {
        $('container').appendChild($('test_content'));
        contentWin = null;
        Windows.removeObserver(this);
      }
      debug(eventName + " on " + win.getId())
    }
  }
  Windows.addObserver(myObserver);
}

Вот тот, который у меня есть (я не могу открыть его более одного раза за обновление):

         function openCappAR() {
      var cApp = new UI.Window({theme: "ultra_dark",
      width:  360, 
           height: 350,
           superflousEffects: superflousEffects}).center().show();
           cApp.setContent(
           $('ceBlock').setStyle({
            display: 'inherit'
})
)
    cApp.header.update("Create an App");   
     }

В основном мне нужно, чтобы DIV вернулся к своей первой версии, когда окно закрыто. Я думаю, что в Javascript тоже есть Обозреватели, так что если я ошибаюсь, добавлю тег JS, исправьте меня:)

РЕДАКТИРОВАТЬ: По сути, мне нужно окно, которое я смогу открыть заново после закрытия. Основная проблема теперь заключается в том, что при открытии нового окна он удаляет div из исходного документа и когда я закрываю окно, НЕТ DIV вообще.

1 Ответ

1 голос
/ 15 августа 2011

После просмотра Prototype UI я понял, что вы говорите не об открытии реального окна, а скорее о перемещающемся элементе, похожем на окно на странице.Это очень важно отметить.

В любом случае, если бы я понял ваш вопрос (и я не уверен, что понял), я бы подумал, что вы можете просто клонировать элемент div и использовать клон в окне.,Это оставило бы оригинальный div нетронутым и все еще на месте.

var windowContent = $('ceBlock').clone(true);
windowContent.setStyle({ display: 'inherit' });
cApp.setContent(windowContent);

Не проверял его, но он должен работать.Просто отметьте, что clone не клонирует и не копирует какие-либо прослушиватели событий, которые есть у вас в элементе, поэтому вам придется добавить их снова, если они у вас есть.* Прототип clone метод в основном просто псевдоним для встроенного в браузер cloneNode метода .Поэтому, если вы не можете использовать метод Prototype, вы должны сделать это вместо этого:

// use the standard DOM method
var windowContent = $('ceBlock').cloneNode(true);

// use the dollar function to ensure that the cloned element has been extended by Prototype
$(windowContent).setStyle({ display: 'inherit' });

cApp.setContent(windowContent);
...