Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于呈现代码的javascript书签_Javascript_Bookmarklet - Fatal编程技术网

用于呈现代码的javascript书签

用于呈现代码的javascript书签,javascript,bookmarklet,Javascript,Bookmarklet,我最近在聊天部分了解到,如果使用书签,可以渲染LaTeX: stackexchange站点都像这样呈现代码。介于``之间的任何内容都将作为代码呈现 我觉得这个功能非常好用。我想知道是否有人知道如何在stackexchange站点中获取实现这一点的javascript,并将其作为书签,就像mathjax书签一样 可在此处找到: 这样的话,如果我在facebook或任何其他网站上写了一些带有反勾转义的东西,我只需点击我的书签,上面写着renderCode,javascript就会像在这个网站上做

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

stackexchange站点都像这样呈现代码
。介于``之间的任何内容都将作为代码呈现

我觉得这个功能非常好用。我想知道是否有人知道如何在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);
});