質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

2916閲覧

JavaScriptでタグ同士の+結合で文字列が崩れる

rice

総合スコア70

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/09/30 07:47

正規表現で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);

解決方法等もし分かる方がいらっしゃたらご教授頂ければ幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

見当違いだったら申し訳ないんですが、
↓のようにwindow.openの後のダブルクォーテーションはエスケープ
してやる必要がある気がします。

JavaScript

1'<a href="javascript:void(0);" onclick="window.open(\\"$1\\", \\"\\", \\"\\")" target="_blank">$1</a>'

投稿2015/09/30 07:58

notable

総合スコア415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rice

2015/09/30 08:45

エスケープはおっしゃる通りでソース間違っております。 試しましたが出来ませんでした。以下のように崩れてしまいます。 <a href="javascript:void(0);" onclick="window.open(\" http:="" www.yahoo.co.jp\",="" \"\",="" \"\")"="" target="_blank">http://www.yahoo.co.jp</a>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問