2017-10-28 110 views
0

我创建了一些生成一些程序代码的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> 

回答

1

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> 
+1

返回false并不能改变什么。 但声明按钮的类型作为按钮帮助了很多:-) 非常感谢! – Vlorian

相关问题