2011-07-07 8 views
1

環境は、jqueryとjquery-uiをフロントエンドに持つJava Webアプリケーションです。 「参加者」サイトに表示されるコンテンツを作成できる管理サイトがあります。これを行う場所?

クライアントは、管理サイトにWYSIWYGタイプのエディタを必要とし、参加サイトに表示されるテキストエリアにHTMLを収めることができます。私はそれらのいくつかを見て、cleditorでいくつかの実験を行いました。それは使いやすいと思われ、私が欲しいもののほとんどを行います。バックエンドにAntiSamy pluginを使用して、 "管理者"が悪意のあるコードを追加しないようにすることをお勧めしました。私は管理者をあまり信頼していないと思います。

しかし、私には私の頭を傷つける要件が1つあります。彼らは、テキストエリアに追加されたハイパーリンクが別のウィンドウに入ることを望んでいます(毎回異なるウィンドウではありません)。だから基本的に彼らはそれぞれのhrefにtarget="myWindow"が必要だと思います。また、エディタでハイパーリンクを作成する場合でも、ハイパーリンクを含むWord文書を貼り付ける場合でも、ハイパーリンクを作成するかどうかにかかわらず、これを適用したいと考えています。

私の質問は、このtargetをすべての階層に適用する方法についてです。それを行うwysiwygエディタはありますか?それはAntiSamyプラグインで行うことができますか?(これはすでにHTMLを解析しているので)、または2つの間のどこかでそれを行う必要がありますか?

答えて

1

ユーザーがフォームを送信すると、ページ上のJavaScriptでそれを処理します。すべてのアンカータグを繰り返し処理し、必要なターゲットビットを末尾に追加することができます。このプロセスは、ここでの答えのようになります。

jQuery - Change the anchor tag in CLEditor

1

データが転記された後に、私はそれを行います。 JSOUPでHTMLを解析し、新しいターゲットを追加するのはかなり簡単です。あなたは正規表現でもそれを行うことができます。

別のオプションはJavaScriptを使用して簡単にあなたがベースタグを認識していない場合は、最後のオプション

$(".somediv a").attr('target', '_blank'); 

を追加することです。 <base target='_blank'/>を実行すると、すべてのHREFを新しいターゲットにすることができます。

編集 - ジャスティンが指摘したように

また、あなたが投稿する前にHREFを処理することができます。私はCKEditがこのオプションを持っていることに気づいていませんでした。これはおそらく良い解決策です。

+0

ベースタグが動作しません、それは参加者のページ上のすべてのhref、管理者が作成したコンテンツをないものだけに影響しますので。しかし、提案に感謝します。 –

+0

私はあなたがページのどの部分を変更するかを制御できるとは思わないので、私はALLを言った。私はジャスティンのソリューションが最高だと感じます。がんばろう。 +1のおかげで –

関連する問題