2011-03-29 16 views
2

在我的一個網站上,我用&害羞;寬鬆地在網絡瀏覽器中提供更好的連字符。不幸的是,它們會被複制或剪切和粘貼所損壞,所以當人們從我的網站上覆制時,會出現一些非常令人討厭的非法字符。我在這裏誇大了一點,但你明白了。用javascript剪切/複製過濾器選擇?

我很想過一種方法來篩選副本上的選擇 - 基本上有機會在他們到達剪貼板之前將其刪除。 我懷疑這是不可能的,基於我讀過/研究過的內容,但是我認爲我會在這裏問集體智慧,以免我錯過了一些東西。

會有什麼美麗的僞代碼示例:

element.oncopy = function (ev) { 
    ev.selection.replace(/­/g, ''); 
    return true; // or ev, I suppose 
} 
+1

''而不是?這裏有一篇有趣的文章http://www.cs.tut.fi/~jkorpela/shy.html – mplungjan 2011-03-29 19:12:12

+0

''在英語中沒有在分詞符處提供連字符。我可以使用通過CSS創建一個連字符'wbr:after {content:' - '}'但是你不能區分''是否被使用,所以不妨使用連字符。 – Benj 2011-03-29 20:10:59

+0

啊,我明白了。我以爲你會得到一個連字符我的道歉。 http://www.quirksmode.org/oddsandends/wbr.html – mplungjan 2011-03-30 07:29:16

回答

3

看一看這篇文章有關oncopy事件。我認爲這正是你需要的:http://help.dottoro.com/ljwexqxl.php

例2下頁解釋瞭如何使用剪貼板在一個跨瀏覽器友好的方式(因爲只有IE瀏覽器訪問的第一篇文章中使用的clipboardData對象):http://help.dottoro.com/ljxundda.php

該頁面還提到有些情況下安全限制可能會阻止跨瀏覽器方法的運行,這就是爲什麼有些網站使用Flash來操縱剪貼板。下面是其中討論了該方法的文章,如果這聽起來像你想要什麼:http://www.jeffothy.com/weblog/clipboard-copy/

編輯

看看Hyphenator.js。這是一種在客戶端智能地連字符的JavaScript方法。快速播放演示(which can be found here),它似乎將複製文本中的連字符留下。將內容更改爲使用此內容而不是­可能會很痛苦,但它看起來會實現您的所有目標。

+0

我也問過之前看過這個。我無法讓代碼在Chrome上運行,而Googling暗示execCommand不是可靠的選擇。你用這種方法取得了成功嗎? – Benj 2011-03-29 20:12:36

+0

不是。我認爲閃存選項是*最*可靠的,但是你甚至不能指望這一點,因爲有些用戶可能沒有安裝/啓用插件,或者他們可能是從iOS瀏覽器等進行復制。看看我答案的更新部分,可能會有一些興趣。 – Ender 2011-03-29 20:34:12

+0

肯定會考慮到這一點。我目前正在做連字符服務器端,但這可能使它值得做客戶端,或者我可以嘗試弄清楚它如何讓客戶端被排除在複製之外。 – Benj 2011-03-29 22:31:57