4

これをどこで探すべきかわかりません。ドロップダウンを作成して Gist ID を選択し、それをプレースホルダー div に生成 (埋め込み) しようとしています。

私は以前、スクリプトを生成しましたが、非表示にして、単純に rel ID で表示しました。しかし、 Gist の埋め込みが 3 つ以上ある場合でも、これは非常に遅くなります。

を試してみましたが、Gist の埋め込みコードではスライドできないgetScriptと思います。document.write

誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

7

ここでの問題は、Gist 埋め込み JavaScript で使用される document.write が、ページの読み込み後に実行されないことです。これを回避するには、iframe を作成し、その本体を Gist 埋め込み JS に設定し、onload イベントを設定して、それに応じて iframe のサイズを変更するように親に指示します。これが私の解決策です: https://gist.github.com/1748966

于 2012-02-06T02:15:29.663 に答える
7

当時はそれが最良の答えだったかもしれませんが、今ではもっと良い答えがあると思います。

特定の Gist (例: https://gist.github.com/anonymous/5446951 ) の場合、 https: //gist.github.com/anonymous/5446989 で Gist の HTML マークアップと CSS URI を含む JSON オブジェクトにアクセスできます。 .json - 次のようになります。

{
    "description": ...,
    "public":true,
    ...
    "div": <HTML code>,
    "stylesheet": <URI of CSS file>
}

実際、このデータは JSONP として取得できます: https://gist.github.com/anonymous/5446989.json?callback=callback12345

したがって、 iframe なしで Gist を動的にロードするには:

function loadGist(element, gistId) {
    var callbackName = "gist_callback";
    window[callbackName] = function (gistData) {
        delete window[callbackName];
        var html = '<link rel="stylesheet" href="' + escapeHtml(gistData.stylesheet) + '"></link>';
        html += gistData.div;
        element.innerHTML = html;
        script.parentNode.removeChild(script);
    };
    var script = document.createElement("script");
    script.setAttribute("src", "https://gist.github.com/" + gistId + ".json?callback=" + callbackName);
    document.body.appendChild(script);
}
于 2013-04-23T20:14:51.633 に答える
0

私はこれを試したことはありませんが、JSONP を使用した例をいくつか示します。

これらを試してみて、それらがあなたに適しているかどうかを確認できますか?

PHP のパススルーが必要な場合は、次のライブラリを参照してください。

そして、通常の jQuery AJAX 呼び出しを介してアクセスします。

于 2012-02-06T02:19:02.807 に答える