【发布时间】:2017-09-08 21:45:05
【问题描述】:
无法直接复制生成的链接(不用ctrl+C)
我是usign document.execCommand('copy'),但似乎没有效果。
如果代码没有 AJAX,那么它可以正常工作。
这里是
HTML:
<div class="permalink-control"> </div>
JQUERY:
$(".permalink-control")
.append(
'<div class="input-group">' +
' <span class="input-group-btn"><button type="button" class="btn btn-default" title="Get Permalink"><span class="glyphicon glyphicon-link"></span></button></span>' +
' <input type="text" class="form-control">' +
'</div>'
);
$(".permalink-control input")
.hide()
.focus(function () {
// Workaround for broken selection: https://stackoverflow.com/questions/5797539
var $this = $(this);
$this.select()
.mouseup(function () {
$this.unbind("mouseup");
return false;
});
});
$(".permalink-control button")
.click(function () {
var $this = $(this);
$.ajax({
url: "https://api-ssl.bitly.com/shorten",
dataType: "jsonp",
data: {
longUrl: window.location.href,
access_token: "your access token",
format: "json"
},
success: function (response) {
var longUrl = Object.keys(response.results)[0];
var shortUrl = response.results[longUrl].shortUrl;
if (shortUrl.indexOf(":") === 4) {
shortUrl = "https" + shortUrl.substring(4);
}
$this.parents(".permalink-control")
.find("input")
.show()
.val(shortUrl)
.focus();
},
async:false
});
});
更新:
How do I copy to the clipboard in JavaScript?
不回答我的问题,因为如果 AJAX 不存在,我的代码也会在不使用 ctrl+C 的情况下复制。
但是,当我使用 AJAX 时,document.execCommand('copy') 不起作用。
【问题讨论】:
-
@AndreiGheorghiu 复制工作,只是当你点击按钮时不行。
-
我的代码也直接复制链接。但是当我使用 AJAX 时。链接没有被复制。
-
@AndreiGheorghiu 你找到了一个不相关的答案。当您直接单击输入时,复制工作,而不是当您单击其他按钮(如按钮)时。更不用说答案已经很老了,而且现在完全不相关了。
-
@AndreiGheorghiu 我已经知道这个答案仔细阅读我的问题
-
您唯一的选择是在用户单击时填充输入值。 this possible 在您的用例中吗?如果您不想在每次页面加载时触发对
$.ajax()的调用,请在按钮周围设置一个更大的不可见元素,并在鼠标进入不可见元素时触发 ajax。不是防弹的,但总比没有好。一个好的技巧可能是将按钮放在下拉菜单、抽屉、弹出窗口、模式或工具提示中。当用户打开它时,在它打开之前得到响应。并在 ajax 返回之前禁用按钮。
标签: javascript jquery ajax