我无法直接复制生成的链接(不使用ctrl+C)。
我正在使用document.execCommand('copy')
,但它似乎没有效果。
这是
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://dev59.com/9G025IYBdhLWcg3wyZEn
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
});
});
更新:
不是回答我的问题,因为如果没有使用 AJAX,我的代码也可以复制而无需使用 ctrl+C。
然而,当我使用 AJAX 时,document.execCommand('copy')
不起作用。
$.ajax()
调用,请设置一个更大的不可见元素围绕按钮,并在鼠标进入不可见元素时触发ajax。虽然不是万无一失,但总比没有好。一个好的技巧可能是将按钮放在下拉菜单、抽屉、弹出窗口、模态框或工具提示中。当用户打开它时,在它打开之前获取响应。并在ajax返回之前禁用按钮。 - tao