Google一键声明全局变量L

Google One-tap declares global variable L

Google一键库在与其他库一起使用时会出错,因为它声明了一个全局变量L。

我在缩小的代码中看到了这个,但我不确定它在做什么。

var L = 0;
function K(g) {
  return "jscomp_symbol_" + (g || "") + L++
}

这与其他定义全局 L 的库(如 LeafletJS)冲突 https://github.com/Leaflet/Leaflet

我找不到 Google 的一键代码提交补丁的开源项目。我该如何解决这个问题?

在修复Google一键文件中的错误之前,您可以简单地使用Leaflet的noConflict模式,这样您就可以将Leaflet重新分配给您喜欢的任何其他全局变量名称,并避免那些Google 库使用。由于后者是一个缩小的文件,大多数变量和函数的长度都是 1 或 2 个字符。

// Should actually be BELOW the HTML part,
// but SO insists on displaying the JS part first.

var map = Leaflet.map("map").setView([48.86, 2.35], 12);

Leaflet.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.2.0/dist/leaflet.css">
<script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet-src.js"></script>

<script>
  // Re-assign L from Leaflet to any other global variable, and avoid conflict
  // with other libraries, like Google One-tap in this case.
  var Leaflet = L.noConflict();
</script>

<script src="https://smartlock.google.com/client"></script>

<div id="map" style="height: 200px;"></div>

我是此库 Google 的产品经理。现在应该解决这个问题。对此感到抱歉,感谢您的耐心等待。