【问题标题】:Where to do this?在哪里做这个?
【发布时间】:2011-07-07 23:01:52
【问题描述】:

环境是一个java web app,前端有jquery和jquery-ui。有一个管理站点,他们可以在其中创建出现在“参与者”站点上的内容。

客户希望在管理站点上有一个 WYSIWYG 类型的编辑器,以便他们可以将 HTML 粘贴到出现在参与者站点上的文本区域中。我一直在看其中的一些,并用cleditor 做了一些实验,它似乎很容易使用,并且可以满足我的大部分需求。我还被建议在后端使用AntiSamy plugin 来防止他们的“管理员”添加恶意代码——我猜他们不太信任他们的管理员。

但我有一个要求让我摸不着头脑。他们希望添加到文本区域的任何超链接进入另一个窗口(而不是每次都进入不同的窗口)。所以基本上他们想在每个href中都有一个target="myWindow",我猜。无论是在编辑器中创建超链接,还是粘贴包含超链接的 Word 文档,他们都希望这一点适用,这似乎是他们经常做的事情。

我的问题是如何将这个target 应用于所有href。是否有一个所见即所得的编辑器可以做到这一点,或者可以在 AntiSamy 插件中完成(因为它已经解析了 html)还是我需要在两者之间的某个地方完成?

【问题讨论】:

    标签: javascript editor backend


    【解决方案1】:

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

    jQuery - Change the anchor tag in CLEditor

    【讨论】:

      【解决方案2】:

      我会在数据发布后进行。使用 JSOUP 解析 HTML 并向其添加新目标非常容易。你也可以用 RegEx 来做。

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

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

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

      编辑 -

      正如贾斯汀指出的那样,您可以在发布之前处理 href。我不知道 CKEdit 有这个选项。这可能是更好的解决方案。

      【讨论】:

      • 基本标签不起作用,因为这将影响参与者页面上的所有href,而不仅仅是管理员生成的内容。但是感谢您的建议。
      • 对,我说全部是因为我认为您无法控制要更改页面的哪个部分。我觉得贾斯汀的解决方案是最好的。祝你好运。感谢您的 +1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 2011-01-23
      相关资源
      最近更新 更多