7

我使用prettyprint插件作为语法荧光笔,它在页面加载时工作正常,但是当我动态添加新元素时它不起作用!我尝试prettyPrint()在加载新内容后使用它来调用它,但它不起作用!我还按照插件网站上的说明包装prettyPrint()了一个函数,但它也不起作用!任何帮助将非常感激。我这样安装插件:

<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js"></script>

我的代码是:

function showCode(e){
    (e.preventDefault) ? e.preventDefault() : e.returnValue = false;
    var parent = document.createElement('div'),
        pre = document.createElement('pre'),
        code = document.createElement('code'),
        elm = (e.currentTarget) ? e.currentTarget : e.srcElement,
        src = elm.getAttribute('href'),
        id = elm.getElementsByTagName('img')[0].getAttribute('src').replace(/images\/(.+?)\.png/g, "$1");
    parent.id = "codeZoom";
    pre.className = "prettyprint linenums lang-" + id;

    var xhr = (window.XMLHttpRequest) ? new window.XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
    xhr.open('get', src, true);
    xhr.send();
    xhr.onreadystatechange = function()
    {
        if(xhr.readyState == 4 && xhr.status == 200)
        {
            var text = document.createTextNode(xhr.responseText);
            code.appendChild(text);
            pre.appendChild(code);
            parent.appendChild(pre);
            document.getElementsByTagName('body')[0].appendChild(parent);
            center(parent);
            prettyPrint();
        }
    }
}

目前我收到错误消息 prettyPrint 未定义。

4

2 回答 2

7

据我所知,您的代码似乎是正确的。

1)包括漂亮的打印(不是run_xxx)版本

2) 每当你的 Dom 更新时调用 prettyPrint()

但是,您包含 prettyPrint 的脚本缺少一个结束符“,所以也许这只是您的问题的一个错字:)

于 2013-04-01T12:26:53.393 回答
6

当 prettyprint() 执行时,它会将“prettyprinted”类添加到容器元素中。我想它不会很好地打印两次,可能会破坏一些东西。

您只需要在再次运行 prettyprint() 之前删除该类。

$('#my_element').removeClass('prettyprinted');
prettyPrint();
于 2015-05-06T13:34:36.530 回答