1

Google One-tap 库在与其他库一起使用时会导致错误,因为它声明了一个全局变量 L。

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

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

这与其他库如 LeafletJS 也定义了全局 L https://github.com/Leaflet/Leaflet

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

4

2 回答 2

2

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

于 2017-11-20T18:26:59.627 回答
2

在 Google One-tap 文件中的错误得到纠正之前,您可以简单地使用 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>

于 2017-11-15T02:09:01.977 回答