TL;DR:Leaflet 只操作 DOM,这样做永远不会引发 CORS 错误。
Leaflet 创建<img>
DOM 元素,并将它们添加到 DOM。魔法开始发生在这行代码:
var tile = document.createElement('img');
然后设置src
属性,使元素看起来像<img src='foo/x/y/z.png'>
:
tile.src = this.getTileUrl(coords);
然后,通过这一行L.GridLayer
将该元素添加<img>
到 DOM的功能:
container.appendChild(tile);
然后有一点魔法将它定位<img>
在一些容器元素中,使其保持在正确的位置,并在加载图像时重置其 CSS 类。
Leaflet 操作 DOM。Leaflet不做的是通过 javascript 访问图像信息。换句话说:传单不使用XmlHttpRequest
也不fetch
。
因此,代码在加载资源时不会抛出与 CORS 相关的错误,因为这只发生在通过XmlHttpRequest
or请求资源时fetch
。
但是,如果您尝试访问 JS 代码中的图像数据,您会发现 CORS 错误(通常这是通过canvas
功能完成的,例如,请参阅L.TileLayer.GL
尝试将加载的图块用作 WebGL 纹理)。但在基本情况下不会发生这种情况。
另请注意,如果加载失败(由于 HTTP 错误或其他原因) ,图像将触发error
事件。反过来,这将使L.TileLayer
s 触发一个tileerror
事件。如果您对查看磁贴加载错误感兴趣,您可能需要为此使用事件处理程序。