【问题标题】:How can I intercept and modify markdown from the wmd markdown editor before it posts?如何在 wmd 降价编辑器发布之前拦截和修改降价?
【发布时间】:2023-04-01 23:45:01
【问题描述】:

我正在启动一个 Stack Exchange 站点,我希望能够在 markdown 脚本获取问题之前和之后截取问题文本。

我希望能够在问题窗口中输入[custom-tag]stuff to be altered[/custom-tag],然后将要更改的内容删除(因为标准降价引擎将无法解释它)存储它,然后替换在我自己的(服务器端)引擎处理后,在输出中标记要更改的内容。

我第一步失败了;我找不到markdown javascript。它是隐藏在/content/js/master.js 中的某个地方吗?

编辑:我会尝试通过一个我想要实现的示例来让这一点更清楚。

我正在运行一个面向扑克的 SE 网站。玩家讨论扑克牌,但不是输入一手牌中发生的纯文本记录,而是使用转换器使其更具可读性。

所以,不要在论坛上发布这个:

PokerStars 游戏 #29112867044:奥马哈底池限注 ($100/$200) - 2009/06/07 19:51:27 ET 表 'Thomsen' 9-max 座位 #2 是按钮 座位 2: Mary & Joey(筹码 14729 美元) 座位 4:William(筹码 28306 美元) Mary & Joey:小盲注 $100 威廉:大盲注$200 *** 洞牌 *** 玛丽和乔伊:筹集 400 美元至 600 美元 威廉:打电话给 400 美元 *** FLOP *** [6d Td 3c] 威廉:检查 玛丽和乔伊:支票 *** 转 *** [6d Td 3c] [Kc] 威廉:检查 玛丽和乔伊:支票 *** 河流 *** [6d Td 3c Kc] [7d] 威廉:下注 600 美元 玛丽和乔伊:折叠 未跟注 ($600) 返还给威廉 威廉从罐子里收集到 1198 美元 威廉:不露手 *** 概括 *** 总底池 $1200 |抽 2 美元 板 [6d Td 3c Kc 7d] 座位 2:Mary & Joey(按钮)(小盲注)在河牌圈弃牌 座位 4:William(大盲注)筹到($1198)

他们将首先访问 3rd 方网站并将其转换为:

PokerStars 底池限注奥马哈,$200.00 BB(2 手)
SB ($14729)
BB ($28306)

翻牌前:
SB 下注 $600,BB 跟注 $400

翻牌:($1200) 6, 10, 3(2 名玩家)
BB 过牌,SB 过牌

转牌:($1200)K(2 名玩家)
BB 过牌,SB 过牌

River:($1200) 7(2 名玩家)
BB 下注 $600,1 折

总底池: $1200 |抽成: $2

我想删除用户必须访问第三方网站的步骤,将其粘贴到他们手中,选择 HTML 输出,然后将结果复制并粘贴到问题中。相反,我希望他们能够用 [hand][/hand] 标签包装原始手测试,并且转换将自动处理。

编辑 2:

经过进一步调查,这似乎是不可能的(没有很多 hacky JS)。 首先需要解决 Ajax 跨域问题才能使用任何外部服务进行转换。

然后,如果您设法覆盖 WMD 预览 - 您仍然必须弄清楚当实际答案正常呈现时该怎么做。一种方法是让 JS 在呈现任何问题或答案时查找标签,并使用转换后的版本更新 DOM - 这会从性能 POV 中吸走。

我想我必须等待并希望 SE 允许我们以其他方式覆盖它。

【问题讨论】:

  • 如果您不希望将您的问题移至 meta,请不要将其标记为 stackoverflow
  • 我不明白这一点。您能否举例说明您期望文本在每个阶段的内容?
  • 凯夫。添加了对我正在努力实现的目标的真实描述。 SG,有道理!
  • 如果您保存降价或 HTML,添加可能是个好主意。如果您要保存降价,那么只需在标签到达降价处理器之前对其进行处理(因为它会很高兴地采用 html)。

标签: javascript wmd


【解决方案1】:

WMD 会在您键入时自动填充预览元素,对吗?好吧,它需要在某个地方有一个转换器来执行此操作。该转换器是摊牌(你可以obtain here)。这是它的用法(从源文件中提取):

// Showdown usage:

var text = "Markdown *rocks*.";

var converter = new Showdown.converter();
var html = converter.makeHtml(text);

这意味着您可以简单地不使用提供的预览元素,而是使用您自己填充的元素。此外,您需要自己在 textarea 上收听 keypress 事件并解析文本,然后调用 Showdown。当输出如您所愿时,将其放入您自己的预览元素中。

【讨论】:

  • 谢谢。这帮助我获得了预览。不久之后我意识到,如果我不能在问题和答案发布后覆盖它们的呈现,这并没有真正的帮助——我认为我做不到。
  • 您应该能够覆盖帖子的呈现。你不能提供自己的 CSS 吗?
  • 仅使用 css 执行手动转换非常困难。我基本上必须调用外部服务来执行转换。转换过程并非微不足道,因为有 50 多种不同的手牌变化来支持不同的网站和游戏类型。我可以看到它可能的唯一方法是使用 javascript 读取每个页面并查找 [hand] 标签并在看到它并更新 DOM 时转换手。这会很糟糕,因为每次查看页面时都需要缓慢调用 ahnd 转换服务。
  • 只需将 [hand] 转换为 然后应用 CSS。允许使用基本 HTML。
猜你喜欢
  • 1970-01-01
  • 2010-12-23
  • 2012-06-17
  • 1970-01-01
  • 2011-01-06
  • 2010-09-28
  • 1970-01-01
  • 2010-09-12
  • 2013-01-28
相关资源
最近更新 更多