我一直怀疑这个疑问,我想在从该URL加载脚本之前测试URL是否存在,但是我尝试这样做的方式失败了,因为我正在使用XMLHTTPRequests并且知道很多,当您使用此方法从服务器获取与执行GET的脚本不同的文件时,您将返回is not allowed by Access-Control-Allow-Origin
。
那么为什么Modernizr.load()
方法理论上可以加载脚本,我甚至看不到它是否真的存在?
答案 0 :(得分:2)
因为Modernizr.load()
,如@ dm03514所述,不是通过XMLHttpRequest加载脚本,而是通过插入没有跨域限制的<script
标记 。然后它会尝试检查脚本是否正确加载,但这不是一件容易的事,并且可能无法在所有浏览器中完成。有关更多详细信息,您可以看到对不同浏览器的支持的重新编译,以查看可用于检查加载脚本/ css成功的各种选项:http://pieisgood.org/test/script-link-events/
至于XMLHttpRequest失败的原因,您可以在MDN上阅读有关跨域限制的更多信息:https://developer.mozilla.org/en-US/docs/HTTP_access_control
使用脚本加载器的一些动机是:
此外,当您使用脚本加载器时,通常会加载脚本加载器,包括应用程序代码,以便您的应用程序代码可以访问所有依赖项。 require.js模型(谷歌AMD模块)是组织应用程序的好方法。它允许您编写执行特定任务并重用它们的小模块,而不是一个可以完成所有任务的大文件。