Udostępnij za pośrednictwem


Nie można odnaleźć nazwanych okien przeglądarki, gdy program Internet Explorer jest uruchamiany jako opublikowana aplikacja

Ostrzeżenie

Wycofana, nieobsługiwana aplikacja klasyczna Internet Explorer 11 ma zostać trwale wyłączona za pośrednictwem aktualizacji aplikacji Microsoft Edge dla niektórych wersji systemu Windows 10. Aby uzyskać więcej informacji, zobacz artykuł pt. Często zadawane pytania dotyczące wycofywania aplikacji klasycznej Internet Explorer 11.

Ten artykuł pomoże rozwiązać problem, w którym nie można znaleźć okna przeglądarki o nazwie, gdy Internet Explorer jest uruchamiany jako opublikowana aplikacja.

Oryginalna wersja produktu: Internet Explorer 9
Oryginalny numer KB: 2833316

Objawy

Rozważmy następujący scenariusz:

  • Kontrola konta użytkownika (UAC) jest wyłączona.

  • Program Internet Explorer nie jest uruchamiany ze środowiska powłoki pulpitu użytkownika (Explorer.exe). Ten scenariusz jest często spotykany, gdy program Internet Explorer jest uruchamiany w jeden z następujących sposobów:

    • Za pośrednictwem usługi terminalowej RemoteApp
    • Jako nazwana aplikacja na karcie Programy Podłączanie pulpitu zdalnego (mstsc.exe)
    • Za pośrednictwem usług sesji zdalnej innych firm, takich jak te udostępniane przez firmę Citrix
  • Używasz strony internetowej, która programowo ustawia nazwę okna, a następnie otwiera nowe okno z tej strony. W tym scenariuszu zostanie utworzone puste okno, a strona początkowa pozostaje niezmodyfikowana. Oczekuje się jednak, że strona początkowa zostanie zmieniona.

Poniższy przykład znaczników HTML przedstawia ten scenariusz. oryginalny skrypt nazywa okno. Następnie po załadowaniu strony skrypt tworzy nowe okno. Skrypt w nowym oknie automatycznie próbuje wstawić ciąg tekstowy powodzenia do strony, z której utworzono nowe okno przy użyciu nazwy oryginalnego okna.

  • main.html

    <!DOCTYPE html>
    <html>
        <head>
            <script type="text/javascript">
                function initScr() {
                self.name = "MainWindow"
                var ret = (window.open("second.html", "_blank"));
                }
            </script>
        </head>
        <body onload="initScr()">
            main window
            <div id="mydiv">
                original content
            </div>
        </body>
    </html>
    
  • second.html

    <!DOCTYPE html>
    <html>
        <head>
            <script type="text/javascript">
                function initScr() {
                var ret = (window.open("", "MainWindow"));
                var el = ret.document.getElementById("mydiv");
                el.innerHTML = "success";
                }
            </script>
        </head>
        <body onload="initScr()">
            second window
        </body>
    </html>
    

Rozwiązanie

Rozwiązanie 1

Aby rozwiązać ten problem, zalecamy włączenie kontroli dostępu użytkownika. Ponieważ problem występuje na serwerach terminali, a ponieważ program Internet Explorer jest wykonywany jako powłoka, należy mieć włączoną funkcję kontroli dostępu użytkownika ze względów bezpieczeństwa.

Aby uzyskać więcej informacji na temat wyłączania kontroli konta użytkownika w systemie Windows Server, zobacz Wyłączanie kontroli konta użytkownika (UAC) w systemie Windows Server.

Rozwiązanie 2

Aby rozwiązać ten problem, możesz również zacząć od tymczasowej strony, która otwiera pierwsze okno, a następnie zamknąć tę stronę lub ją zminimalizować. Jeśli jednak zamkniesz stronę, strona tymczasowa może nie zostać zamknięta automatycznie i może wymagać interwencji użytkownika w celu jej zamknięcia.

W przykładowym skrypcie wymienionym w sekcji Objawy podejmij następujące działanie:

W main.html oznacz jako komentarz wiersz zawierający self.name, a następnie utwórz nową stronę, aby otworzyć oryginalne pierwsze okno (main.html) i zamknąć lub zminimalizować nową stronę.

  • temp.html

    <!DOCTYPE html>
    <html>
        <body>
            <script language="javascript">
                window.open("main.html", "MainWindow");
                window.close();
            </script>
        </body>
    </html>
    

Zamiast rozpoczynać się od main.html, zaczynasz od nowej strony (temp.html).

Więcej informacji

Ten problem może również wystąpić, gdy program Internet Explorer jest uruchamiany przy użyciu konta administratora. Domyślnie członkowie lokalnej grupy zabezpieczeń Administratorzy nie podlegają mechanizmom kontroli UAC oraz ograniczeniom operacyjnym.