javascript - 如何删除打开的选项卡上的导航栏

标签 javascript html angular typescript

我想在新标签页中打开当前窗口但没有导航栏

我使用 window.open 在新选项卡中打开,使用 document.getElementById 删除导航栏。

https://stackblitz.com/edit/angular-6-routing-pu4kjz

 openNewTab() {
    window.open('' + this.href, '_blank').focus();
    document.getElementById('navigation').outerHTML = '';
  }
<button style="background:red;" 
   (click)="openNewTab()" 
   routerLink="/{{ href }}">
     Open-In-New-Tab >
</button>

实际结果: 单击该按钮时,导航栏将从当前窗口中删除,但在新选项卡上导航栏仍然存在。

预期结果: 单击按钮时 - 我希望当前窗口保持不变(使用导航栏)。新选项卡打开时应该没有导航栏。

最佳答案

一个简单的解决方案是传递一些查询参数,例如:

window.open('' + this.href + '?show=false', '_blank').focus();

然后在你的组件中禁用基于这个参数的导航

那么你的组件应该是这样的:

import { Component } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';


@Component({
  selector: 'about',
  templateUrl: './about.component.html'
})

export class About{
  title: string = "About Page.";
    public href: String = '';

    constructor(private router: Router, private route:ActivatedRoute)
{ }
  openNewTab() {
    window.open('' + this.href + '?show=false', '_blank').focus();
    document.getElementById('navigation').outerHTML = '';
  }

  ngOnInit() {
    this.href = decodeURI(this.router.url.replace(/\/.*\//g, ''));
    this.route.queryParams.subscribe(params => {
      if (params.show === 'false') {
        document.getElementById('navigation').outerHTML = '';
      }
    });
  }
}

关于javascript - 如何删除打开的选项卡上的导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57726002/

相关文章:

javascript - 无法将 google trend 中的 js 片段添加到 HTML 页面中

javascript - 如何创建下拉侧导航栏?

angular - 如何显示带有 Angular 下拉列表的动态表以及如何将每一行推送到另一个 div

javascript - (CSS-Javascript-Jquery) 如何为轮播制作缩略图 slider ?

javascript - bootstrap multiselect select all 没有出现在列表中

javascript - 从外部 JavaScript 访问 JSON 数据

javascript - HTML 5 - 输入类型文本实时获取其值

Angular 4 - 让父组件选择 child 将使用的服务

javascript - 如何在 javascript 中设置表单的输入值?

javascript - html4 中的自定义键盘 Tab 键顺序