Javascript 在 MS EDGE 中调试时的不同行为
Javascript different behaviour when debugging in MS EDGE
我需要将页面中的文本复制到剪贴板,但我遇到了一些问题,因为代码无法正常工作,但当我使用调试器查看发生的情况时,它可以正常工作。
代码在发送 ajax 调用时运行,如下所示:
function printRelatedContent(key, nodeId, name) {
$.ajax({
url : "getNodeProperties.web",
data : {
nodeId : nodeId
},
type : 'POST',
success : function(data) {
var divCopy = $('<div/>', {
'id' : 'copy-button' + key,
'class' : 'glyphicon glyphicon-duplicate',
'style' : 'cursor:pointer;margin-left: 10px;',
'title' : 'Copy to clipboard'
});
$('#modalRelatedLabel').append(divCopy);
divCopy.unbind('click').click(function() {
//workaround to copy to clipboard in MS Edge since old clipboardData.setData isn't working anymore
var textArea = document.createElement("textarea");
textArea.value = name;
document.body.appendChild(textArea);
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Copying text command was ' + msg);
} catch (err) {
console.log('Oops, unable to copy');
}
document.body.removeChild(textArea);
});
},
error : function(data) {
alert("Error");
}
});
}
我所说的问题是它根本不工作(虽然控制台日志说它成功了),但是当我在代码的任何地方放置一个断点时它就像魅力一样工作并将文本复制到剪贴板。
有什么我遗漏的吗?
提前致谢!
我终于把整个东西改成了 https,它就像@phuzi 建议的那样,用一个简单的 Clipboard.writeText() 来代替糟糕的 textArea 东西,就像魅力一样。谢谢!
我需要将页面中的文本复制到剪贴板,但我遇到了一些问题,因为代码无法正常工作,但当我使用调试器查看发生的情况时,它可以正常工作。
代码在发送 ajax 调用时运行,如下所示:
function printRelatedContent(key, nodeId, name) {
$.ajax({
url : "getNodeProperties.web",
data : {
nodeId : nodeId
},
type : 'POST',
success : function(data) {
var divCopy = $('<div/>', {
'id' : 'copy-button' + key,
'class' : 'glyphicon glyphicon-duplicate',
'style' : 'cursor:pointer;margin-left: 10px;',
'title' : 'Copy to clipboard'
});
$('#modalRelatedLabel').append(divCopy);
divCopy.unbind('click').click(function() {
//workaround to copy to clipboard in MS Edge since old clipboardData.setData isn't working anymore
var textArea = document.createElement("textarea");
textArea.value = name;
document.body.appendChild(textArea);
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Copying text command was ' + msg);
} catch (err) {
console.log('Oops, unable to copy');
}
document.body.removeChild(textArea);
});
},
error : function(data) {
alert("Error");
}
});
}
我所说的问题是它根本不工作(虽然控制台日志说它成功了),但是当我在代码的任何地方放置一个断点时它就像魅力一样工作并将文本复制到剪贴板。
有什么我遗漏的吗?
提前致谢!
我终于把整个东西改成了 https,它就像@phuzi 建议的那样,用一个简单的 Clipboard.writeText() 来代替糟糕的 textArea 东西,就像魅力一样。谢谢!