Necesito copiar SQL de la respuesta de Ajax, pero parece que el portapapeles solo permite una activación manual.
Funcionó en Chrome90+ pero no funciona en Chrome69.
¿Cómo se escriben cosas en el portapapeles de forma asincrónica en Chrome 69?
Aquí está el botón que tenía opacidad en 0:
<button id="SaveSql1" class="tag-read" :data-clipboard-text="sql" @click="copy">don't click me</button>Aquí está el botón en el que hago clic para obtener información del backend:
<div id="SaveSql" class="span_css" :data-clipboard-text="sql" @click.stop="selectSql('save',item)" > click Me </div> async selectSql(action, item) { const params = { dbName: item.dbName, id: item.id, tableName: item.title, schemaName: item.schema } this.dataLoading = true try { const res = action === 'save' ? await tree.getSaveSql(params) : await tree.getDefaultSql(params) this.dataLoading = false this.sql = res.data.content const button = document.getElementById('SaveSql1') button.click() } catch (err) { this.$message.err(err) } }, copy() { var clipboard = new Clipboard('.tag-read', () => { return this.sql }) clipboard.on('success', e => { this.$message.success('success copy') clipboard.destroy() }) clipboard.on('error', e => { this.$message.warning("the browser doesnt't allow copy") clipboard.destroy() }) },