Закрыть всплывающее окно, если пользователь вышел из системы в угловых - PullRequest
0 голосов
/ 20 февраля 2019

В моем приложении есть страница, на которой пользователь может открыть всплывающее окно.Когда пользователь нажимает кнопку выхода, он должен закрыть всплывающее окно.Я использую статическую переменную для хранения всплывающих оконных переменных в Global.ts class

public static QUICKTREND : any;

В функции, чтобы открыть всплывающее окно, я сохранил ее

this.quickWin = window.open(URL, 'QuickTrend', 'width=' + w + ', 
height=' + h + ', left=' + x + ', top=' + y + ', location=no'+ ', status=no'); 
 Constants.QUICKTREND = this.quickWin;

В функции logout () я получаювсплывающее окно и закрытие

if(!isNullOrUndefined(Constants.QUICKTREND)){
       let currentIframe = Constants.QUICKTREND;
       currentIframe.close();
 }

Это работало правильно, если я не обновлял страницу.

Но когда я обновляю страницу, переменная QUICKTREND сбрасывается в неопределенное значение.

Я искал решение для сохранения переменной, если страница обновляется, единственное решение для сохранения в localStorage или sessionStorage.Но, таким образом, я не могу сохранить объект всплывающего окна, потому что это объект DOM, Converting circular structure to JSON ошибка показа.

localStorage.setItem("currentIframe", this.quickWin);

Можно ли сохранить всплывающее окно в localStorage?

Как можноЯ закрываю всплывающее окно при выходе из системы, если страница обновляется?

1 Ответ

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

Вы можете попробовать следующий код:

app.component.ts

import { Component, HostListener } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'Angular-Experiment';

  public myWindow;
  private URL = 'https://www.google.com/';

  @HostListener('window:beforeunload', ['$event'])
  closeOnrefresh(event) {
    console.log('closeOnrefresh', event);
    if (this.myWindow && !this.myWindow.closed) {
      this.myWindow.close();
    }
  }

  openWindow() {
    console.log("open window");
    if (!this.myWindow || (this.myWindow && this.myWindow.closed)) {
      this.myWindow = window.open(this.URL, 'self', 'width=1000,height=1000');
    } else {
      this.myWindow.focus();
    }
  }

  Winfocus() {
    console.log("Winfocus");
    if (this.myWindow && !this.myWindow.closed) {
      // this.myWindow.close();// to close
      this.myWindow.focus();// to focus
    }
  }

  Logout() {
    console.log("WinLogout");
    if (this.myWindow && !this.myWindow.closed) {
      this.myWindow.close();// to close
    }
  }
}

app.component.html

<input type="button" value="Open" (click)="openWindow()">
<input type="button" value="focus" (click)="Winfocus()">
<input type="button" value="Logout" (click)="Logout()">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...