2009-11-17 115 views
0

一個JavaScript「複製剪貼板」功能剝離空白我有一個網站,該網站,點擊後,調用下面的JavaScript(其他中)在複製剪貼板圖標:來自於Chrome/Safari瀏覽器

var hasInnerText = (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false; 
var elem = document.getElementById(codeID); 
var content; 

// strip out all html tags and just get the text 
if (!hasInnerText) { 
    content = elem.textContent; 
    content = content.replace(/\xA0/g,' '); 
} 
else { // ie check 
    content = elem.innerText; 
} 

這在IE和Firefox中運行良好,但在Safari和Chrome中無法運行。我認爲這與他們的「Webkit」性質有關。最終發生的是我得到了格式不正確的空格。我無法用其他方式解釋它。複製剪貼板用於代碼示例,並在IE和Firefox中複製代碼編譯。在Safari/Chrome中,它沒有。

我的假設是content.replace沒有正確完成。是否有另一個更合適的RegEx,我應該做的?

在此先感謝!

編輯:我解決了這個問題。有一個非常奇怪的問題,我不敢相信Chrome/Safari沒有注意到(所以也許我的目標是什麼?)。

我試圖做一個簡單的警告:

// strip out all html tags and just get the text 
    if (!hasInnerText) { 
     content = elem.textContent; 
     alert(content); 

     content = content.replace(/ /g,' '); 
    } 

出於某種原因血腥不會在Chrome/Safari上。但是,當我在if語句之外拉動警報時,它就起作用了。按照這種思路,我也把外面的content.replace拉出來,然後瞧,它工作了。我的代碼正在按預期剝離空白。

有人應該向我解釋這是怎麼回事,或者如果這是一個已知的問題。或者,也許正確的人聯繫。

+0

你看過十六進制查看器中的非編譯文件嗎? – Svante 2009-11-17 23:46:37

+0

是的,空格字符的值爲'20'。有趣的是一些文件使用 和其他 。檢查或者並不能解決問題。 – GJTorikian 2009-11-18 00:28:01

回答

0

我不完全確定那個正則表達式應該做什麼..你能詳細說明一下嗎?

如果你只是想凝聚了空白,這應該是罰款:

content = content.replace(/\s+/g,' '); 
+0

對於Chrome/Safari/Firefox,單個空格字符的翻譯不正確。正則表達式應該刪除空間實體(十六進制中的\ xA0;我也嘗試過&#nbsp;和 ),只有一個空格「' – GJTorikian 2009-11-18 00:29:49