我最近一直在使用 jQuery,遇到了一个问题,我无法将它包含在用户脚本中,因为 XmlHttpRequest 使用相同的源策略。经过进一步测试,我发现大多数浏览器也支持 W3C 定义的跨域资源共享访问控制,作为同源策略问题的解决方法。我通过在包含Access-Control-Allow-Origin: *
http 标头的本地 Web 服务器上托管 jQuery 脚本来测试这一点,它允许使用 XmlHttpRequest 下载脚本,以便它可以包含在我的用户脚本中。我想在发布脚本时使用托管版本的 jQuery,但到目前为止使用http://www.seoconsultants.com/tools/headers等工具进行测试我还没有找到任何允许跨域访问 jQuery 脚本的站点。这是我到目前为止测试过的列表:
- http://www.asp.net/ajaxlibrary/CDN.ashx
- http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery
- http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery
是否有任何其他托管版本的 jQuery 允许跨源访问?我知道 jQuery 通常是通过脚本标签(有时是动态创建的脚本标签)加载的,但在这种特定情况下,我必须使用 XmlHttpRequest 和 Eval 来确保它被加载到正确的范围内。谷歌浏览器支持用户脚本但不支持@require,这意味着在谷歌浏览器的用户脚本中使用jquery的唯一方法是将它嵌入到.user.js文件中,或者通过XmlHttpRequest加载和评估它。嵌入不是最佳解决方案,虽然 Chrome 扩展允许您在扩展中包含 jQuery js 文件,但我更愿意坚持使用用户脚本,因为它们更简单并且可以在多个浏览器中运行。我已经提交了票Google Ajax API和jQuery团队允许跨域访问 CDN,但我的猜测是我现在只需要自己托管它。