我使用 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 未定义。
最佳答案
据我所知,您的代码似乎是正确的。
1) 包含 pretty-print (不是 run_xxx)版本
2) 每当你的 Dom 更新时调用 PrettyPrint()
但是,包含prettyPrint 的脚本缺少结尾“,所以也许这只是您的问题的拼写错误:)
关于javascript - 如何让prettyprint处理动态生成的dom元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15742551/