我正在寫一個支持聊天應用程序,我希望爲網址解析文本。我找到了類似問題的答案,但對於以下內容沒有任何答案。Url在JavaScript和DOM中的解析
我有什麼
function ReplaceUrlToAnchors(text) {
var exp = /(\b(https?:\/\/|ftp:\/\/|file:\/\/|www.)
[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"<a href='$1' target='_blank'>$1</a>");
}
這種模式是一個修改後的版本我在互聯網上找到。它包括www。在第一個標記,因爲不是所有的網址開頭爲協議://然而,當www.google.com被替換
<a href='www.google.com' target='_blank'>www.google.com</a>
其拉起MySite.com/webchat/wwww.google.com和我404
這是我的第一個問題,我的第二個是...
在我生成消息到日誌腳本,我不得不做一個哈克的方式:
var last = 0;
function UpdateChatWindow(msgArray) {
var chat = $get("MessageLog");
for (var i = 0; i < msgArray.length; i++) {
var element = document.createElement("div");
var linkified = ReplaceUrlToAnchors(msgArray[i]);
element.setAttribute("id", last.toString());
element.innerHTML = linkified;
chat.appendChild(element);
last = last + 1;
}
}
要使「鏈接」字符串正確呈現HTML,我必須使用元素的非標準.innerHTML屬性。我更喜歡一種方式,我可以解析字符串作爲標記 - 文本標記和錨記號 - 然後調用createTextNode或createElement(「a」)並將它們與DOM結合在一起。
所以問題1是我應該如何去關於www.site.com解析,甚至site.com? 和問題2是如何才能做到這一點只使用DOM?
不管出於什麼我看來是值得:有沒有點都在擔心「的innerHTML」這裏在2011年 – Pointy 2011-05-25 16:42:45
+1爲,立即解決問題1 ... – 2011-05-25 17:04:06