#javascript #angular #typescript
#javascript #angular #typescript
Вопрос:
Я задавался вопросом, как открыть только одну вкладку, и прежде чем вы сможете открыть другую вкладку, предыдущая вкладка должна быть закрыта. Я открываю вкладку нажатием кнопки,
onClick(){
let url = this.router.createUrlTree(['/user/', this.id]);
window.open(url.toString(), "_blank", "resizable=no, toolbar=no, scrollbars=no, menubar=no, status=no, directories=no, location=no, width=1000, height=600, left=" horizontal " top=100 " );
console.log(this.data.maxtab);
}
Это приводит к компоненту «user», который вложен в другой компонент.
И когда одна из них открыта, и вы пытаетесь открыть другой компонент, тот, который открыт, должен быть сфокусирован.
Я попытался изменить переменную, которую я назвал maxtab в ngOnDestroy компонента, но это не работает. Как я могу этого добиться? С помощью OnBeforeunload с помощью JS (посмотрел, но не смог реализовать) или есть другие способы?
Ответ №1:
попробуйте это,
объявить переменную в component.ts
private mywindow;
Теперь в вашей функции попробуйте это:
if(this.mywindow) {
this.mywindow.close();
}
this.mywindow = window.open(url.toString(), "_blank", "resizable=no, toolbar=no, scrollbars=no, menubar=no, status=no, directories=no, location=no, width=1000, height=600, left=" horizontal " top=100 " );
Комментарии:
1. Мы определяем mywindow внизу. Если я сделаю это таким образом, mywindow в условии if не будет найдено… но я понимаю принцип. Не могли бы вы выразиться точнее? Он должен закрывать всплывающее окно, только если оно существует, а не стартовое окно, которое всегда есть, может быть, здесь кроется ошибка?
2. Я отредактировал свой ответ на основе того, что вы сказали в приведенном выше комментарии. Если это не то, что вам нужно, не могли бы вы немного подробнее объяснить свое требование?
Ответ №2:
Вы должны использовать параметр name, чтобы указать название окна.
window.open(URL, name, specs, replace)
пример:
var myWindow = window.open(url.toString(), "mypopup", "resizable=no, toolbar=no, scrollbars=no, menubar=no, status=no, directories=no, location=no, width=1000, height=600, left=10 top=100");
if (myWindow) {myWindow.focus()}
Вы можете указать любое имя вместо «mypopup».
При этом вам не нужно закрывать предыдущее всплывающее окно, оно откроет новый URL с тем же всплывающим окном.
MyWindow.focus() установит фокус на уже открытом всплывающем окне при открытии нового предоставленного URL.