window.close не работает для открытого окна в IE 11 - PullRequest
0 голосов
/ 06 февраля 2019

У меня проблема в IE 11, что при открытии нового окна через win1 = window.open(...) я не могу закрыть его снова через win1.close().

Ниже, при выходе из главного окнадочернее окно, открытое в OpenWindowWithGet (), не закрывается в IE 11. Отлично работает с Google Chrome.

[Обновление]: когда я выполняю эту операцию на консоли IE 11 под инструментами разработчика, я могуоткрыть окно с помощью window.open (используя назначенную переменную) и закрыть его с помощью window.close () [as var1.close ()].Просто нечто большее, чем могло бы помочь проанализировать эту аномалию.

<html>
<script type="text/javascript">
var win1; 

function OpenWindowWithGet(urllink, windowoption, name){

var form = document.createElement("form");
form.method = "GET";
form.action = urllink;
form.target = name;

var input = document.createElement("input");
input.type = "hidden";
input.name = "OAP_Id";
input.value = OAP_Id;
form.appendChild(input);

document.body.appendChild(form);
win1 = window.open(urllink, "Manual", windowoption);
form.submit();}

function OAPLogoutClick(){ 
     disconnectFromNodeServer();
     win1.close();

}


HTML-код для OpenWindowWithGet () внутри функции MyManual () -

                   <h:panelGrid  id="manual" columns="2" cellpadding="2px" cellspacing="0" style="display: inline-block;">
                    <h:panelGroup>
                       <a onclick="return myManual();" target="_blank" style="width: 40px; display: inline-block;  position: relative; top: 2px; color: #000000">Manual</a>
                    </h:panelGroup>
                    <h:outputLabel id="manualSeparator" value=" | " style="color: #000000; display: inline-block;"/>
                </h:panelGrid>

HTML-код для OAPLogout () -

                                <div class="oapadding5" onclick="hideGroupedInfo();OAPLogoutClick();stopEventPropagation(event);"  onmouseover="onRowMouseOver(this);" onmouseout="onRowMouseOut(this);" style="display: #{oASession.m_bShowLogout eq 'true'? '':'none'}">
                                    <h:commandLink id="logoutLink2" styleClass="oatextpaddingleft" style="color: #{oAThemeBean.m_objCurrentThemeInfo.m_strTextFontColor};" value="#{OMNIGEN.LOGOUT}" onclick="return false;">
                                    </h:commandLink>
                                </div>

Схожий вопрос, но предоставленное разрешение не помогло. вопросов / 710756

Есть предложения?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Если ваш urllink указывает на другой домен, вы не получите объект окна в IE по соображениям безопасности (я могу ошибаться, но я полагаю, что это связано с проблемой XSS).

Если нет;попробуйте следующий код для демонстрации:

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <button onclick="openWin()">Open "myWindow"</button>
        <button onclick="closeWin()">Close "myWindow"</button>

        <script>
            var myWindow;

            function openWin() {
                var params = "width=200, height=100";
                myWindow = window.open("**here is have to be the same domain or leave it blank", "myWindow" /*, params */);
                console.log(myWindow);
                myWindow.document.write("<p>This is 'myWindow'</p>");
            }

            function closeWin() {
              myWindow.close();
            }
        </script>
    </body>
</html>

в открытой строке, 1-й параметр должен быть тем же доменом или оставить его пустым, чем вам будет разрешено, чтобы открыть открытое окно, чтобы закрыть его.

0 голосов
/ 07 февраля 2019

Я провел некоторое тестирование, и я пришел к ответу: это не ваша ошибка.

Проблема не связана с win1.close, она win1 не определена, потому что IE особенный.Если вы запускаете этот код в IE 11:

const win = window.open("https://www.google.com/")
console.log(win)

, он регистрирует: null.Это потому, что по какой-то причине window.open возвращает null, а не ссылку на новое окно. Этот ТАК вопрос имеет решение вашей проблемы.В самом популярном ответе говорится, что открытие окна с вашего веб-сайта, размещенного из локального файла, обеспечивает такое поведение, если вы размещаете свой веб-сайт, то он должен вести себя так же, как и в других браузерах.

...