我想使用 JSON-P 在我的网页上加载我的 Google 日历提要。为了使页面上的主要内容加载更快,我仅在页面加载后将 JSON-P 的脚本标签注入到 head 标签中。Google Calendar API 返回一个带有回调函数的脚本,请参见此处的示例。
是否可以避免使用全局函数作为回调函数?我想将注入标签和解析结果的所有必要代码封装在一个封装函数中。
我想使用 JSON-P 在我的网页上加载我的 Google 日历提要。为了使页面上的主要内容加载更快,我仅在页面加载后将 JSON-P 的脚本标签注入到 head 标签中。Google Calendar API 返回一个带有回调函数的脚本,请参见此处的示例。
是否可以避免使用全局函数作为回调函数?我想将注入标签和解析结果的所有必要代码封装在一个封装函数中。
您可以做的是使用应用程序所在的全局方法。
MYAPP.method({...});
不,当您使用 JSON-P 调用时,服务器会返回如下内容:
callback({...})
在您使用<script>
element 引用此 JSON-P 调用 URL 后,浏览器将下载 JavaScript 代码并执行它,这意味着callback
使用服务器提供的数据执行您的函数。
如果您不希望回调函数污染您的全局命名空间,只需在回调函数中添加一些命名空间,例如com.mycode.callback
.
使用 JSON-P 的最大优势是它可以在浏览器中绕过同源策略,并且您可以轻松地使用来自其他域的数据。