2011-09-16 62 views
7

呦切割時取下文本樣式,複製/使用CSS或JavaScript

好吧一直noodling就這一個了一會兒:如何不沿着任何風格的行李將複製/剪切樣式的文本(背景色,雙色等)?

的攻擊路線的夫婦已經挫敗:文本使用不同的選擇::

  1. 風格?不工作,::風格是不可複製的
  2. 樣式使用jQuery的選擇結合這隻適用於輸入,非p選定的文本,資料覈實
  3. 攔截並通過結合去除風格使用jQuery複製/粘貼的事件?無法訪問複製的對象來刪除東西,嘗試使用e.preventDefault();然後返回事件對象,但沒有工作
  4. 修改剪貼板數據一旦保存?也沒有骰子,大多數瀏覽器不會讓你到這一點沒有閃光燈和某種確認

總之,想法?似乎對於具有白色背景色的網站會非常有用。

+0

爲了確保我明白了,您想將純文本複製到剪貼板而不進行格式化? –

+0

是的。我想阻止抓取樣式的默認複製/剪切。或者甚至是awesomer有選擇地做,比如說留下font-family和font-weight,但是nix的顏色和背景。如果我不得不猜測如何做到這一點,你可以 – Mojowen

+0

在複製之前更改文本。一旦事情被傳遞到剪貼板,他們似乎無法通過javascript訪問。 – Mojowen

回答

4

我現在還沒有時間對代碼進行編碼,但是您可以對鍵盤快捷鍵觸發的剪切/複製進行此操作。它不適用於通過上下文菜單或編輯菜單選項進行剪切/複製,因爲它在剪切或複製事件觸發前依賴於更改用戶選擇。

的步驟:

  1. 拉手的Ctrl鍵 - ÇCtrl鍵 - X鍵盤快捷鍵和Mac等同物。
  2. 在這個處理程序中,創建一個離屏元素(絕對位置和左-10000px,比方說),並將選定的內容複製到它。您可以使用window.getSelection().getRangeAt(0).cloneContents()來做到這一點,但您需要使用IE < 9的單獨代碼,並且您應該檢查選擇是否不合並。
  3. 做任何你喜歡的事情來改變屏幕外元素的內容樣式。
  4. 移動選擇以包含屏幕外元素的內容,以便剪切或複製該內容。
  5. 使用window.setTimeout()添加一個簡短的延遲(幾毫秒),該延遲調用一個可以移除離屏元素並恢復原始選擇的函數。
+0

通過這個工作,有點如何移動選擇的提示? – Mojowen

+0

@Mojowen:下面是一個選擇元素內容的示例函數:http://stackoverflow.com/questions/2044616/select-a-complete-table-with-javascript-to-be-copied-to-clipboard/ 2044793#2044793 –

+1

我想我已經明白了,謝謝蒂姆。隨着一些清理,看起來很像這樣:http://jsfiddle.net/mojowen/hCHWy/ – Mojowen

0

您是否需要在瀏覽器中爲每個用戶執行此操作?

如果不是 - 它只是爲你 - 那麼你可以使用Clipmate軟件做到這一點。

http://www.clipmate.com/index.htm

它有一個特點,刪除所有的造型。

+0

我一直在尋找這種情況發生在任何複製/剪輯上,而不僅僅是特定的事情。 – Mojowen

1

一旦觸發複製或剪切可以剝去HTML標記和只有文字與一些正則表達式

var String = Sample.replace(/(<([^>]+)>)/ig,""); 

此外,如果你有ID爲「sample_div」一個div 您存儲的文本使用var String=$('sample_div').text('');只得到裏面的文字

+0

那麼如何在複製/剪切事件的上下文中使用它?我試過它: 'jQuery(document).bind('cut copy',function(e){var> = Sample.replace(/(<([^>)+)>)/ ig,「」); 返回字符串; });' 樣本不被識別 – Mojowen