在一個網站,其中包含數量很多的數字表格,我添加了一個輔助函數來選擇一個給定的表格,以便用戶可以將數據複製到剪貼板並粘貼到他最喜歡的電子表格軟件中。請注意,我的函數不會將任何內容複製到剪貼板,它只是突出顯示相應的HTML元素(即完整的<table>
)。這部分工作正常。檢測範圍取消選擇
我現在正在實現一項功能請求:表格中的圖像不應該被複制。我的第一個想法是,只要隱藏他們當我選擇表,並再次,這工作正常。但我想顯示他們回來時,不再選擇表,並有我的問題:我不知道如何完成該部分。我編寫了fiddle with a simplified example。一個典型的表看起來像這樣:
<div>
<table class="data">
<tr>
<th>Table</th><td>#1</td><td><img src="/img/logo.png"></td>
</tr>
</table>
<input type="button" class="select" value="Select">
</div>
它可以通過兩種方式來選擇:
- 的對錶本身
「選擇」按鈕下方
jQuery(function($){
$("body").on("dblclick", "table.data", function(){
selectTable($(this));
return false;
});
$("body").on("click", ".select", function(){
selectTable($(this).siblings("table.data:first"));
return false;
});
$(document).on("click", noTableSelected);
});
function selectTable($table){
$table.find("img").hide();
selectNode($table[0]);
}
function noTableSelected(){
$("table.data img").show();
}
...其中selectNode()
負責創建文本範圍並選擇它。
我需要$(document).on("click", noTableSelected);
位的幫助。除了矯枉過正之外,當用戶使用上下文菜單訪問「複製到剪貼板」命令時,它也會觸發。我也嘗試在桌面上捕獲blur
事件,但是這樣的事件在我認爲它不會觸發時(我想在不處理窗體控件時沒用)。
任何想法在適用時啓動noTableSelected()
?或者,有沒有更好的方法來避免將圖像複製到剪貼板?
確實[很有前途的方法](http://jsfiddle.net/3wuzX/6/),非常感謝提示。 –
我是這樣工作的。我還使用了一些變量來緩存內容以及[右鍵單擊檢測](http://stackoverflow.com/questions/1206203/how-to-distinguish-between-left-and-right-mouse-click-with -jquery)。當然,用戶仍然可以使用鍵盤撤消選擇,但該修復對於99%的情況都很好。 –