Javascript 如何获得prettyprint来处理动态生成的dom元素

Javascript 如何获得prettyprint来处理动态生成的dom元素,javascript,pretty-print,Javascript,Pretty Print,我使用插件作为语法高亮器,当页面加载时它工作正常,但当我动态添加新元素时它就不工作了!加载新内容后,我尝试使用prettyPrint()调用它,但没有成功!我还按照插件网站上的说明,用函数包装了prettyPrint(),但它也不起作用!任何帮助都将不胜感激。 我安装的插件如下: <script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js"></script> 目

我使用插件作为语法高亮器,当页面加载时它工作正常,但当我动态添加新元素时它就不工作了!加载新内容后,我尝试使用
prettyPrint()
调用它,但没有成功!我还按照插件网站上的说明,用函数包装了
prettyPrint()
,但它也不起作用!任何帮助都将不胜感激。 我安装的插件如下:

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

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

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

1) 包括漂亮的印刷版(非run_xxx)版本

2) 随时更新Dom时调用prettyPrint()

但是,包含prettyPrint的脚本缺少一个结束符”,因此可能只是一个打字错误。您的问题:)

当prettyPrint()执行时,它会将类“prettyprinted”添加到容器元素中。我想,如果它没有打印两次,可能会破坏一些内容

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


你需要显示一些上下文。如果它说
prettyPrint
没有定义,那是因为它没有定义!不可能知道你当前的代码我添加了插件网站的链接,它应该在页面加载时创建
prettyPrint
函数,我认为这是因为它在其他
pre
元素上工作当页面开始时!但它在这里说:我可以(滚动到页面的末尾),不?这不适用于使用加载程序(run_prettify.js),据我所知,您可以通过使用未记录的
PR.prettyPrint()来实现
prettyPrint
函数
函数。不过,如果停止使用加载程序并使用
prettyPrint()会更安全
相反。如果这是您的情况,请告诉我如何包含prettyPrint?我必须将其下载到我的服务器吗?不,只需按照步骤进行操作,并确保向任何您想要美化的内容添加一个CSS prettyPrint类。实际上不需要其他任何东西。是的,您确实需要下载它,或者找到它的cdn版本……这是t中说的第一件事我在我的网站www.I-technology.net上使用它,去那里看看我是如何引用它的。我现在在iPad上,所以帮不上什么忙,但如果我没记错的话,我在那里引用了一些cdn版本。第一步它说下载一个发行版!之后我该怎么做?把它解压缩到你的ch.com目录中像对待jQuery或站点中的任何其他库一样对其进行oice和引用,因为这是正确的答案。必须在调用prettyPrint()之前删除类。也可以使用普通javascript:element.classList.remove(“prettyprinted”)。
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();
        }
    }
}
$('#my_element').removeClass('prettyprinted');
prettyPrint();