要说清楚,我指的是stackoverflow's forked WMD,不是 original version from attacklab的用法。
我想使用分叉版本,但是似乎脚本用来识别WMDify页面元素的div id是wmd.js:66
中的硬编码:
// A collection of the important regions on the page.
// Cached so we don't have to keep traversing the DOM.
wmd.PanelCollection = function(){
this.buttonBar = doc.getElementById("wmd-button-bar");
this.preview = doc.getElementById("wmd-preview");
this.output = doc.getElementById("wmd-output");
this.input = doc.getElementById("wmd-input");
};
如果我只想使用不同的地区名称,我自己就可以了 - 但我想在一个页面上使用可变数量的WMD编辑器。我需要一种方法来告诉每个WMD实例它应该影响的页面区域,但我没有看到任何“挂钩”。
看不见可能是我几乎完全缺乏js知识的产物。 Right Thing To Do™是为了正确学习javascript,但我正处于一个截止日期的项目中。我真的很想使用这个版本的WMD,但我需要一些关于如何修改WMD脚本的线索,或者只是一个如何以一种我可以指定使用哪个div id的方式调用它的例子。
线索赞赏!
答案 0 :(得分:7)
我有类似的问题所以我重新考虑WMD能够做到这一点。 my version of wmd
最近,我重新检查了这一点。 Google代码中的版本支持页面上的多个版本 google code fork并且是最新的。
答案 1 :(得分:3)
在“有截止日期的项目”中,允许围绕某些限制进行攻击。在这种情况下,我只需要制作WMD编辑器脚本的多个副本(或在服务器端生成它),并用您需要的标识符替换ID。这样,您就可以在一个页面上立即部署多个WMD。
您必须非常清楚一件事:您 累积technical debt(“slapdash软件架构和草率软件开发的最终结果”)在您的项目上。你 必须重新审视这笔债务以偿还这笔债务,否则你将在维护时淹没利息。
答案 2 :(得分:0)
wmd.js第2339行可能是一个很好的起点:
Attacklab.wmd_defaults = {version:1, output:"HTML", lineLength:40, delayLoad:false};
为您需要更改的每个div ID添加一个选项。
通过在包含wmd.js之前添加脚本块来覆盖这些设置,例如:
<script type="text/javascript">wmd_options = {"output": "Markdown"};</script>
然后将wmd.PanelCollection
功能更改为..
wmd.PanelCollection = function(){
this.buttonBar = doc.getElementById(wmd.wmd_env["wmd-button-bar"]);
this.preview = doc.getElementById(wmd.wmd_env["wmd-preview"]);
this.output = doc.getElementById(wmd.wmd_env["wmd-output"]);
this.input = doc.getElementById(wmd.wmd_env["wmd-input"]);
};
请注意,这是完全未经测试的,可能无效,但与自动生成WMD编辑器或制作多个副本相比,稍微更优雅..
编辑:我尝试进行编辑,但这并不像添加到wmd_defaults那么简单 - 各种项目(主要是按钮栏)使用的是ID而不是类,但是,它很接近..
编辑2 :经过多次摆弄后,我会说答案基本上是“不”。
更好的答案是否定的,不是没有WMD的一些相当大的变化(超出我非常有限的javascript体验的变化)..
我尝试将所有硬编码的div名称移动到设置,并为所有按钮类名称添加了“elementNamePrefix”设置,而不是使用"wmd-spacer1"
使用wmd.wmd_env["elementNamePrefix"] + "spacer1"
...但是甚至有了这个你需要复制CSS文件中的项目,并且这些更改导致了我无法解决的奇怪行为(我认为是因为第一行定义的全局AttackLab变量?不确定)..
也许,作为拥有多个WMD控件的替代方法,您可以使用下拉菜单通过AJAX加载不同的帖子?它肯定比修改WMD以允许多个实例更容易..
答案 3 :(得分:0)
This项目可能是一个良好的开端。