Javascript 为什么Sharepoint在复制到ClipPard时会意外重新加载页面?

Javascript 为什么Sharepoint在复制到ClipPard时会意外重新加载页面?,javascript,html,sharepoint,Javascript,Html,Sharepoint,我创建了一些HTML/JavaScript站点,生成了一些程序代码。创建程序代码时,它显示在textarea元素中。用户可以点击一个按钮,代码被复制到剪贴板上 在常规的HTML/JavaScript中,这很正常。但现在我将其移植到SharePoint 2013中的一个Web部件片段中 当用户快速单击按钮时,代码将成功地作为文本存储在用户剪贴板中。但就在同一时刻,SharePoint网站重新加载并重置了代码段中的所有设置。我无法理解为什么JavaScript代码在SharePoint的代码段中运行

我创建了一些HTML/JavaScript站点,生成了一些程序代码。创建程序代码时,它显示在textarea元素中。用户可以点击一个按钮,代码被复制到剪贴板上

在常规的HTML/JavaScript中,这很正常。但现在我将其移植到SharePoint 2013中的一个Web部件片段中

当用户快速单击按钮时,代码将成功地作为文本存储在用户剪贴板中。但就在同一时刻,SharePoint网站重新加载并重置了代码段中的所有设置。我无法理解为什么JavaScript代码在SharePoint的代码段中运行时表现出如此大的不同。 代码如下:

只需在click handler末尾返回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特有的,但在您的情况下,可能是因为按钮位于元素中。因此,单击它会导致表单提交到服务器

或者,在按钮的标记上设置type=button也可以:

<button type="button" onclick=jacascript:copy2clip();>Copy to clipboard</button>

当我在自定义django管理页面中添加复制功能时,页面将重新加载

即使我没有在onclick函数中写入任何内容,页面也会重新加载

所以原因不是功能

当我将button元素更改为input元素时,它就工作了

<input type="button" onclick="myCopy('{obj.id}')" value="Copy"/>

当您使用button标签时,默认情况下,无论函数中有什么内容,它都会提交表单。因此,它将导致刷新当前浏览器窗口。但是如果您使用input type=按钮,则默认情况下它不会提交表单,它将检查函数操作。

返回false不会改变任何内容。但是将按钮类型声明为按钮帮助很大:-非常感谢!
<input type="button" onclick="myCopy('{obj.id}')" value="Copy"/>