用于呈现代码的javascript书签
我最近在聊天部分了解到,如果使用书签,可以渲染LaTeX: stackexchange站点都像这样呈现代码用于呈现代码的javascript书签,javascript,bookmarklet,Javascript,Bookmarklet,我最近在聊天部分了解到,如果使用书签,可以渲染LaTeX: stackexchange站点都像这样呈现代码。介于``之间的任何内容都将作为代码呈现 我觉得这个功能非常好用。我想知道是否有人知道如何在stackexchange站点中获取实现这一点的javascript,并将其作为书签,就像mathjax书签一样 可在此处找到: 这样的话,如果我在facebook或任何其他网站上写了一些带有反勾转义的东西,我只需点击我的书签,上面写着renderCode,javascript就会像在这个网站上做
。介于``之间的任何内容都将作为代码呈现
我觉得这个功能非常好用。我想知道是否有人知道如何在stackexchange站点中获取实现这一点的javascript,并将其作为书签,就像mathjax书签一样
可在此处找到:
这样的话,如果我在facebook或任何其他网站上写了一些带有反勾转义的东西,我只需点击我的书签,上面写着renderCode,javascript就会像在这个网站上做的一样
有人知道以前是否有人问过这个问题和/或如何做到这一点吗?谢谢给你一个开始:
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"
您可以使用任何您喜欢的标记来代替“”和“
”来创建您喜欢的效果
您也可以使用如下函数:
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);
}
}
以便将其应用于元素内的所有文本节点
您仍然需要将其转换为书签,并找出如何找到正确的元素。您需要标记和CSS来显示您喜欢的输出。但这可能是一个好的开始。这是一个完全不同的问题。解析任意标记以查找要标记的部分可能很有挑战性。这并非不可能,但StackExchange站点所做的要简单得多,因为它们从纯文本开始,并基于纯文本输出标记。你试过什么吗?@ScottSauyet,我没有试过,因为这实际上是我第一次了解bookmarklet。我猜我可以找到bookmarklet是如何与mathjax一起工作的,然后在facebook上创建一个脚本来浏览帖子(简单的纯文本),并像这里一样将其更改为标记。不幸的是,我真的不知道他们是如何做到这一点的。如果你是从纯文本开始的,那么它可能不会那么难。但如果您试图对HTML标记执行此操作,我认为您可能会遇到一些困难。@ScottSauyet,纯文本。当你在facebook上发布内容时,你只需输入纯文本。我很想在回帖之间写点东西,回帖不会像$LaTeX$那样在facebook上呈现,但如果我们点击书签,它就会像本网站一样抓取文章内容并进行更改。@ScottSauyet,看看$LaTeX$是如何呈现的?但是如果你有我在帖子中展示的书签,它们就会被改变。更具体地说,如果您单击显示render MathJax的书签。这就是我目前在facebook上所做的,但我不知道如何在代码部分这样做。谢谢你的反馈。我会暂时搁置,等我有更多时间再谈。目前我还没有加价,但最终会回来的。
processTextNodes(someElement, function(node) {
node.value = node.value.replace(/`([^`]*)`/g, replacer);
});