Как открыть URL в новом окне, а затем вызвать Ctrl + P (печать)? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть iframe внутри div и у меня есть кнопка печати, при нажатии на печать я хочу открыть новую вкладку и вызвать действие печати для URL, отображаемого в iframe.Я использую Angular 7.

Решения, которые я до сих пор пробовал:

Как открыть ссылку на новую вкладку с помощью команды печати?

html

<div>
      <iframe #iframe [src]="url"  width="100%" id='event-print-iframe'
          name="targetframe" allowTransparency="true" frameborder="0" >
            </iframe>

<button (click)='print()'>Print</button>
</div>

component.ts

 import {
  //...
  ElementRef,
  ViewChild
} from '@angular/core';
 @ViewChild('iframe') iframe: ElementRef;
     print()
      {
        let content = this.url;
        let doc =  this.iframe.nativeElement.contentDocument || this.iframe.nativeElement.contentWindow;
        doc.open();
        doc.write(content);
        doc.close();

      }

Решение From iframe внутрикомпонент angular2, свойство 'contentWindow' не существует для типа 'HTMLElement'?

Ошибка при использовании вышеуказанного решения:

ОШИБКА DOMException: Заблокировано aфрейм с источником "http://localhost:4200" от доступа к фрейму перекрестного происхождения.

У меня есть URL-адрес, и я просто хочу открыть его в новой вкладке и распечатать, не нажимая Ctrl + p

Заранее спасибо за помощь!

1 Ответ

1 голос
/ 06 марта 2019

See I am able to open the link in a new tab and the print window appears. ----------


Вы можете установить этот модуль npm и указать любую комбинацию клавиш, которую хотите выполнить.

https://www.npmjs.com/package/angular2-hotkeys

Вы должны будете предоставить целевой пустой указатель для открытия URL-адреса в новой вкладке.

Вы можете попробовать это

  ngAfterViewInIt() {
           this.printView();
  }


   printView() { 
           window.print();
   }

Надеюсь, это поможет:).

...