7

シンタックス ハイライターとしてprettyprintプラグインを使用しています。ページの読み込み時には問題なく動作しますが、新しい要素を動的に追加すると動作しません。新しいコンテンツをロードした後に呼び出すために使用しようとしprettyPrint()ましたが、うまくいきませんでした! また、関数でラップしてプラグイン Web サイトの指示に従いました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 に答える