我不知道去哪里找这个。我正在寻找创建一个下拉列表来选择一个 Gist ID,然后在占位符 div 中生成(嵌入)它。
我以前生成了脚本,但被隐藏了,只是通过 rel ID 显示它们。但这对于超过三个 Gist 嵌入来说是极其缓慢的。
我试过getScript
了,但我猜document.write
Gist 嵌入代码中的代码不会让它滑动。
有人可以指出我正确的方向吗?
这里的问题是 Gist 嵌入 JavaScript 使用的 document.write 在页面加载后没有执行。为了解决这个问题,创建一个 iframe,将其主体设置为 Gist embed JS,并设置一个 onload 事件来告诉父级相应地调整 iframe 的大小。这是我的解决方案:https ://gist.github.com/1748966
虽然这可能是当时最好的答案,但我相信现在有更好的答案。
对于给定的 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);
}
我从未尝试过,但这里有一些使用 JSONP 的示例:
你可以试试这些,看看它们是否适合你?
如果你想要一个 PHP 过去,你可以看看这个库:
然后通过常规的 jQuery AJAX 调用访问它。