2013-06-12 148 views
1

我对JavaScript如何能够加载外部库感到困惑。它是否对我在脚本标记中指定的url执行GET请求?浏览器是处理库的存储还是保存在DOM中的某个地方?JavaScript如何加载外部库?

似乎浏览器加载外部库时可能会做的大多数事情都违反了同源策略。从外部网站加载脚本时是否有任何额外的安全性现代浏览器强制执行?是否可以加载外部库,然后将其源代码打印到屏幕上?

谢谢!

+0

你是什么意思加载外部库? –

+0

我假设他是指一个外部.JS文件以及它如何被下载/加载到内存中。 –

+4

'script'标签可以加载来自不同来源的脚本。他们不遵守同源政策。事实上,他们正在使用相同的源策略的解决方法,请参阅'JSONP'。 –

回答

2

我对JavaScript如何能够加载外部库感到困惑。

JavaScript没有本地方式来加载库。这是主机环境提供的功能(如浏览器或node.js)。

它是否对我在脚本标记中指定的url执行GET请求?浏览器是处理库的存储还是保存在DOM中的某个地方?

浏览器将发出GET请求,将脚本加载到视口的JavaScript环境中,但只保留DOM中的HTMLScriptElement DOM节点。

浏览器加载外部库可能会做的大部分事情似乎违反了同源策略。

同一来源政策旨在保护第三方网站上的非公开数据。脚本不是数据(尽管它们可以被写入,因此它们已经嵌入了数据,JSON-P依靠这种方式来避免相同的来源策略)。

当从外部网站加载脚本时是否有任何额外的安全性现代浏览器强制执行?

没有

是否有可能加载外部库,然后打印其源到屏幕?

否(虽然你可以使用XHR制作一个单独的HTTP请求,以获得脚本源 - 这是受同源策略)。