Как мне закрыть окно в Xpage?
На самом деле я использую следующий код для закрытия моего текущего окна:
window.close()
Дело в том, что он отлично работает в IE, но не работает в FF и Chrome.
Есть ли у них отличное решение для этого?
5 ответов
window.close() работает в 8.5.3, но только в том случае, если parent содержит объект, и не будет этого делать, если у вас есть, например, xpage, который открывается внутри обычного приложения Notes или обычного представления. вам нужно window.open, чтобы получить это.
Я много раз об этом разбирался, но мне не повезло найти ответ. Единственный способ, который я нашел, это то, что вам нужен плагин Mindoo XPage2Esclipse, чтобы заставить это работать.
function windowclose(w) {
try {
if (dojo.isIE>=7) {
w.open('', '_self', '');
w.close();
} else if (dojo.isIE==6) {
w.opener = null;
w.close();
} else {
if(!w.opener)
w.opener = 'x';
w.close();
}
} catch(e) {
alert("To avoid data corruption/loss, please close this window immediately.");
}
}
Для использования в качестве:
windowclose(window)
Я нашел частичное решение, Java твой друг. Это работает в кнопке должно работать в ссылке тоже. Единственная проблема заключается в том, что при вызове из события, такого как onClose, текущая xpage теряет фокус, а текущие страницы остаются открытыми. Я попытался эмулировать ключи отправки, и он нажимает клавишу ESC. Он отлично работает от кнопки в. Кнопка на событие CLick
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var robot:java.awt.Robot= new java.awt.Robot;var event:java.awt.event.KeyEvent=java.awt.event.KeyEvent;
robot.keyPress (event.VK_ESCAPE); robot.keyRelease (event.VK_ESCAPE);enter code here
}]]>
</xp:eventHandler>
</xp:button>
Возможно, вам придется вызвать window.focus() перед вызовом window.close() в Firefox
Я использую window.close без проблем в 8.5.3 приложениях с Chrome / FF / IE.
На главной странице приложения, "Case Document", у меня есть несколько CSJS в верхней части, которая называет страницу т.е.
window.name="mainWindow";
и затем у меня есть кнопка, которая позволяет вам задать вопрос - это открывает новое окно / вкладку и также сохраняет основной документ по делу. В новом окне есть кнопка отправки, которая выполняет полное обновление, и в событии onComplete у меня есть следующий CSJS для обновления основного документа, чтобы вы могли видеть вопрос о главном документе в элементе управления повторением, который показывает потоки вопросов и ответов. Документы:
if (window.opener!=null){
window.opener.location.href = window.opener.location.href;
window.close();}
else {
alert("Can't refresh parent case doc - have you closed the window?");
}
Надеюсь это поможет