【问题标题】:Creating Javascript API like Facebook and Twitter创建像 Facebook 和 Twitter 这样的 Javascript API
【发布时间】:2012-05-27 16:00:33
【问题描述】:
我正在为我的应用程序创建类似于 Facebook 或 Twitter Javascript SDK 工作方式的 javascript API 方法。有人可以就可以帮助我类似地开发 Javascript 方法的资源提供建议。我打算做以下事情:
- 用户应该能够异步加载 Javascript。
- 加载 Javascript 后,调用方法在特定元素上加载 iframe。
感谢人们是否可以帮助我实现这一目标?
【问题讨论】:
标签:
javascript
facebook
api
twitter
【解决方案1】:
这样做很简单。
异步加载库很简单,与facebook无关,是javascript的东西,例如使用facebooks的例子:
(function(d){
var js,
id = "LIB_ID",
ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement("script");
js.id = id;
js.async = true;
js.src = "URL_OF_LIB";
ref.parentNode.insertBefore(js, ref);
}(document));
这将异步加载您的 js。
为了能够“通知”库已加载,您可以使用 facebook 使用的方法,即在窗口上定义回调,因此您的库的用户将执行以下操作:
window.libLoaded = function() {
// Do what ever when the library is loaded
}
在您的 lib 代码中,最后只需调用该回调:
window.libLoaded();
动态创建 iframe 也非常简单:
function loadFrame(url, domEl) {
var frame = document.createElement("iframe");
frame.src = url;
domEl.appendChild(frame);
}
但是,您将无法在 iframe 文档和主文档之间进行通信,因为(我假设)它们不会共享同一个域,并且由于相同的来源策略,浏览器会阻止这种情况。