在哪里这样做?

时间:2011-07-07 14:36:30

标签: javascript editor backend

环境是一个java Web应用程序,前端有jquery和jquery-ui。有一个管理站点,他们可以创建出现在“参与者”网站上的内容。

客户端需要管理站点上的WYSIWYG类型编辑器,以便他们可以将HTML粘贴到参与者站点上显示的textareas中。我一直在研究它们中的一些,并用cleditor进行了一些实验,它似乎很容易使用,它完成了我想要的大部分工作。我还被建议使用后端的AntiSamy plugin来防止他们的“管理员”添加恶意代码 - 我猜他们不会相信他们的管理员那么多。

但我有一个让我挠头的要求。他们希望添加到textareas的任何超链接进入另一个窗口(而不是每次都有不同的窗口)。所以基本上他们希望每个href中都有一个target="myWindow"。并且他们希望这适用于他们是否在编辑器中创建超链接,或者他们是否粘贴了包含超链接的Word文档,这似乎是他们做了很多的事情。

我的问题是如何将此target应用于所有href。是否有一个所见即所得的wysiwyg编辑器,或者可以在AntiSamy插件中完成(因为它已经解析了html)或者我是否需要在两者之间进行操作?

2 个答案:

答案 0 :(得分:1)

数据发布后我会这样做。使用JSOUP解析HTML非常容易,并为其添加新目标。你也可以用RegEx做到这一点。

另一种选择是使用javascript并轻松添加

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

最后一个选项,如果你不知道基本标签。您可以执行<base target='_blank'/>,这将使您的所有href成为新目标。

修改

同样Justin指出,你可以在发布之前处理href。我不知道CKEdit有这个选项。这可能是更好的解决方案。

答案 1 :(得分:1)

当用户提交表单时,我会在页面上的JavaScript中处理它。您可以遍历所有锚标记并将必要的目标位添加到最后。这个过程与答案类似:

jQuery - Change the anchor tag in CLEditor