Как я могу вставить из буфера обмена в serveur? - PullRequest
0 голосов
/ 26 февраля 2019

У меня проблема с моим угловым проектом, в localhost, когда я тестирую свою функцию, которая вставляет данные из буфера обмена, она хорошо работает

файл clipboard.js :

function pasteClipBoard(){}

pasteClipBoard.prototype.clipboardData = function clipboardData(textbox){

    navigator.clipboard.readText().then(

        clipText => textbox.value = clipText
    )
}
var clipboard = new pasteClipBoard()    
export {clipboard}

Использование функции буфера обмена в файле .ts :

@ViewChild("keyTextbox") keyTextbox:DxTextBoxComponent

clipboardPaste($t){
    clipboard.clipboardData(this.keyTextbox)
}

.html:

<dx-text-box id="textbox_paste" [(value)]="textbox" #keyTextbox width="85%"></dx-text-box>

<dx-button icon="glyphicon glyphicon-paste" hint="Paste data from clipboard" width="15%" (onClick)="clipboardPaste($event)"></dx-button>

Но на сервере(IIS) не работает с этим сообщением об ошибке:

ОШИБКА TypeError: Невозможно прочитать свойство 'readText' из неопределенного

https://stackblitz.com/edit/angular-b1f7ou

1 Ответ

0 голосов
/ 05 марта 2019

Я изменил ваш код, как показано ниже,

на вашем компоненте, переключитесь на:

export class AppComponent  {
  @ViewChild("keyTextbox") keyTextbox:ElementRef // <-- should be ElementRef.

  clipboardPaste($t){
      clipboard.clipboardData(this.keyTextbox.nativeElement); // Here we provide the real HTMLElement object as parameter.
  }
}

, затем на вашем помощнике буфера обмена:

pasteClipBoard.prototype.clipboardData = textbox => {
  const el = document.createElement('textarea'); // We create temp textarea.
  el.value = textbox.value; // We populate the original values.
  el.setAttribute('readonly', ''); // we make it hidden.
  el.style.position = 'absolute';
  el.style.left = '-9999px';
  document.body.appendChild(el); // We inject it on the dom to make next line working.
  el.select(); // We select the full text.
  document.execCommand('copy'); // We ask the browser to copy the content.
  document.body.removeChild(el); // We remove from dom the temp textarea.
}

Вы можете посмотреть живой пример

...