1

Die Google One-Tap-Bibliothek Fehler verursacht, wenn mit anderen Bibliotheken verwendet, weil es eine globale Variable erklärt L.Google One-Tap erklärt globale Variable L

ich diese sehe im verkleinerten Code aber ich bin nicht sicher, was es macht.

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

, dass Konflikte mit anderen Bibliotheken wie LeafletJS, die auch https://github.com/Leaflet/Leaflet

ich ein Open-Source-Projekt für die Google-Code One-Tap nicht finden kann, eine globale L definieren einen Patch zu unterbreiten. Wie arbeite ich das an?

+2

Dies ist ein Fehler im Freigabevorgang von Google. Es sollte in einem IIFE verpackt sein. – SLaks

+1

Dieser Code kommt von https://github.com/openid/OpenYOLO-Web – SLaks

+0

Wir beheben derzeit den Fehler. – TMSCH

Antwort

1

Ich bin der Produktmanager für diese Bibliothek bei Google. Dies sollte jetzt behoben werden. Entschuldigung und danke für die Geduld.

2

Bis der Fehler in der Google One-Tap-Datei behoben wurde, können Sie einfach den Leaflet-Modus noConflict verwenden, damit Sie Leaflet jedem anderen globalen Variablennamen zuweisen und die von der Google-Bibliothek verwendeten Namen vermeiden können. Da letzteres eine minimierte Datei ist, werden die meisten Variablen und Funktionen 1 oder 2 Zeichen lang sein.

// 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/[email protected]/dist/leaflet.css"> 
 
<script src="https://unpkg.com/[email protected]/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>

+0

Danke @ghybs! Leider verwenden wir mehrere Leaflet-Bibliotheken, einschließlich [Leaflet.markercluster] (https://github.com/Leaflet/Leaflet.markercluster). Diese Bibliothek sucht nach einem Fenster. Ich weiß also nicht, ob das Abspeichern der Leaflet-Bibliothek für uns funktioniert. Irgendwelche Vorschläge? – derricki