用于呈现代码的JavaScript书签

时间:2012-07-15 01:22:21

标签: javascript bookmarklet

我最近在聊天部分了解到,如果您使用书签,则可以渲染LaTeX:

http://meta.math.stackexchange.com/a/3297

stackexchange站点全部呈现代码like this。 “`之间的任何东西都会被呈现为代码。

我觉得这个功能非常好用。我想知道是否有人知道如何获取在stackexchange网站中执行此操作的javascript并将其作为书签放入,就像mathjax书签一样 在这里找到:

http://www.math.ucla.edu/~robjohn/math/mathjax.html

这样一来,如果我用反引号转义写一些内容,请在facebook或任何其他网站上说,我可以点击我的书签,上面写着renderCode,javascript将会像在这个网站上那样做。

任何人都知道以前是否曾经问过这个问题和/或如何实现这个目标?感谢

1 个答案:

答案 0 :(得分:2)

这是一个开始:

var replacer = function(s, match) {return "<code>" + match + "</code>";};

"some `delimited` code `sections` here". replace(/`([^`]*)`/g, replacer);
    // ==> "some <code>delimited</code> code <code>sections</code> here"

您可以使用您喜欢的任何标记来代替“&lt; code&gt;”和“&lt; / code&gt;”创造你喜欢的效果。

你也可以使用像这样的函数:

processTextNodes = function(element, fn) {
    var children = element.childNodes;
    for (var i = 0; i < children.length; i++) {
        var node = children[i];
        var type = node.nodeType;
        if (type == 1) processTextNodes(node, fn);
        if (type == 3) fn.call(this, node);
    }
}

像这样:

processTextNodes(someElement, function(node) {
    node.value = node.value.replace(/`([^`]*)`/g, replacer);
});

为了将其应用于元素内的所有文本节点。

您仍然需要将其转换为书签,并找出如何找到正确的元素。你需要标记和CSS来显示你喜欢的输出。但这可能是一个好的开始。