正規表現でhttp://~等の入力があった場合自動でアンカー表記し、Link表示するようにJavaScriptを組んでおります。
JavaScript
1 function autoLink(message) { 2 return message 3 .replace( 4 /((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, 5 '<a href="javascript:void(0);" onclick="window.open("$1", "", "")" target="_blank">$1</a>'); 6 }
この結果は以下のように置換されて正常に返ってきているように見えます。
【入力】
りんく:http://www.google.com
【出力】
りんく:<a href="javascript:void(0);" onclick="window.open("http://www.google.com", "", "")" target="_blank">http://www.google.com</a>
実際はこの置換処理の後に以下のようにdiv要素に+で文字列連結しております。
msgが上記で置換したアンカータグが入るようになっています。
var messageElement = $('<div class="sendbox">' + msg + '<span class="msgToolTip">' + sendDate + '</span></div>');
このやり方でやると何故かアンカータグの中身が書き変わってしまっており、デバッガでみたところhttp://がhttp:=""のようになったり崩れてしまっています。
jQueryで要素を生成しているやり方が悪いのかと思い以下のように要素生成後にhtmlでアンカーを追加しましたが駄目でした。
JavaScript
1var messageElement = $('<div class="sendbox"></div>'); 2messageElement.html(msg);
解決方法等もし分かる方がいらっしゃたらご教授頂ければ幸いです。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/30 08:45