我添加了一个"复制到剪贴板"网页上的按钮。当用户从网格中选择一行时,一些细节存储在隐藏的textarea控件中。 此外,页面上的隐藏div(记录详细信息)可见;它包含"复制到剪贴板"按钮。
何时"复制到剪贴板"单击按钮,隐藏文本区域的内容将复制到剪贴板。这只是一个HTML按钮,其onclick设置为javascript函数。此外,textarea的内容以及详细div内容都填充在客户端,因此我无法理解为什么会发生回发。
我注意到,当页面最初加载时,它工作正常:我从网格中选择一条记录,"详细信息"填充页面部分(客户端),其中包括剪贴板按钮。现在,如果我进行搜索,需要回发来过滤网格,然后选择一条记录(更新详细信息div的内容)并单击剪贴板按钮,它会回发。 以下是代码的相关部分:
<textarea id="taDSSInfo" style="display:none"></textarea>
<asp:UpdatePanel runat="server" ID="upnlDetail" RenderMode="Inline" UpdateMode="Conditional">
<ContentTemplate>
<controls for displaying record detail >
<input type="image" id="ibCTC" src="Clipboard.png" />
....
</ContentTemplate>
</asp:UpdatePanel>
// Set textarea's content, based on data from grid's selected record
taDSSInfo = document.getElementById('taDSSInfo');
var text = '';
text += 'Laptop IP: ' + record["IPADDR"] + '\r\n';
....
text += 'Finance Number: ' + record["FINANCENUMBER"] + '\r\n';
taDSSInfo.innerText = text.replace(/\r?\n/g, '\n');
这是处理复制到剪贴板的按钮的绑定事件。它位于.aspx文件的底部:
<script type="text/javascript">
function bindEvent(el, eventName, eventHandler) {
if (el.addEventListener){
el.addEventListener(eventName, eventHandler, false);
}
else if (el.attachEvent){
el.attachEvent('on'+eventName, eventHandler);
}
}
var ibCTC = document.getElementById('ibCTC');
bindEvent(ibCTC, 'click',function(event) {
if (document.all)
{
if (window.clipboardData && clipboardData.setData)
{
var taDSSInfo = document.getElementById('taDSSInfo');
var textToCopy = taDSSInfo.innerText;
window.clipboardData.clearData('Text');
window.clipboardData.setData('Text', textToCopy);
//alert (window.clipboardData.getData ('Text'));
}
}
else
alert ("Copy to clipboard is supported in IE only");
return false;
});
</script>