为什么Sharepoint在复制到clipbpard时意外地重新加载页面?
问题描述:
我创建了一些生成一些程序代码的HTML/JavaScript网站。程序代码创建时,它显示在一个textarea元素中。用户可以敲击按钮并将代码复制到剪贴板。为什么Sharepoint在复制到clipbpard时意外地重新加载页面?
在常规的HTML/JavaScript中,这工作正常。但是现在我将它移植到SharePoint 2013中的Web部件片段中。
当用户敲击按钮时,代码成功存储为用户剪贴板中的文本。但在同一时间SharePoint站点重新加载并重置片段中的所有设置。我无法理解为什么JavaScript代码在SharePoint中的代码片段中运行时表现得如此不同。 这是代码:
...
copy2clip = function() {
document.getElementById('TextCASL').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');
}
}
...
</script>
<button onclick=jacascript:copy2clip();>Copy to clipboard</button>
答
就return false
在单击处理程序结束时阻止该网页提交:
copy2clip = function() {
document.getElementById('TextCASL').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');
}
return false;
}
行为不是特别到SharePoint,但在你的情况下,它可能因为按钮位于<form>
元素内部。所以点击它会导致表单被提交给服务器。
另外,按钮上的标记设置type="button"
应该罚款,以及:
<button type="button" onclick=jacascript:copy2clip();>Copy to clipboard</button>
返回false并不能改变什么。 但声明按钮的类型作为按钮帮助了很多:-) 非常感谢! – Vlorian