Если вы хотите работать с Shadow DOM и Google Sign-In, вы должны поместить кнопку Google в Light DOM, чтобы убедиться, что она будет обнаружена скриптами Google.
connectedCallback() {
this.innerHTML = `<div class="g-signin2" data-onsuccess="onSignIn"></div>`
}
Тогда, поскольку кнопка будет замаскирована Shadow DOM, вы должны реализовать одно из следующих решений.
Вариант 1: вставить кнопку в Shadow DOM
Используйте элемент <slot>
, чтобы кнопка Google появилась в Shadow DOM.
connectedCallback() {
this.innerHTML = `<div class="g-signin2" data-onsuccess="onSignIn"></div>`
this.shadowRoot.innerHTML = `Connect with Google: <slot></slot>`
}
Вариант 2. Нажмите программно скрытую кнопку
Создайте свой собственный <button>
в Shadow DOM и, когда он будет нажат, отправьте щелчок на кнопку Google.
connectedCallback() {
this.innerHTML = `<div class="g-signin2" data-onsuccess="onSignIn"></div>`
this.shadowRoot.innerHTML = `<button>Connect with Google</button>`
this.shadowRoot.querySelector( 'button' ).onclick = () =>
this.querySelector( '.g-signin2 .abcRioButtonContentWrapper' ).click()
}
Примечание: Возможно, вам не следует создавать новые пользовательские элементы с помощью Polymer, поскольку эта библиотека больше не разрабатывается.