Такая же проблема здесь. Я прочитал сценарий, который был вставлен в Google Trusted Stores, и они не предоставляют никакого общедоступного метода для повторной инициализации сценария или метода destroy, чтобы вернуть изменения, которые они уже внесли в ваш документ.
В качестве грязного последнего средства вы можете вручную удалить значок и предыдущий скрипт, а затем снова включить скрипт для повторного запуска. Здесь есть небольшая оговорка ... при первом запуске скрипта создается свойство только для чтения в объекте window, window.GoogleTrustedStore
. Сценарий не будет запускаться во второй раз, если это свойство определено.
Вы можете запретить настройку этого свойства как только для чтения, если вы определяете его до выполнения скрипта Google. Вот пример всего этого:
// Define object as configurable before Google Trusted Stores locks it.
// Need to be able to overwrite this property later to re-initiliaze the script.
Object.defineProperty(window, 'GoogleTrustedStore', {configurable: true});
var gts = window.gts || [];
gts.push(["locale", "en_US"]);
// ... finish defining your gts options
// Insert the GTS script to run it:
(function() {
const script = document.createElement("script");
script.src = "//www.googlecommerce.com/trustedstores/api/js";
const s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(script, s);
})();
// Using timeout for demonstration purposes
setTimeout(function(){
// Dirty example of destroying the existing badge
var dirtyDestroy = document.querySelectorAll('#gts-comm, #gts-c, script[src^="http://www.googlecommerce.com"], script[src^="https://www.googlecommerce.com"], script[src^="http://www.gstatic.com/trustedstores"], script[src^="https://www.gstatic.com/trustedstores"]');
[].slice.call(dirtyDestroy,0).forEach(function(el){el.parentNode.removeChild(el)});
// Reset window.GoogleTrustedStore
Object.defineProperty(window, 'GoogleTrustedStore', {value: undefined});
// Insert the script again to re-run it:
(function() {
const script = document.createElement("script");
script.src = "//www.googlecommerce.com/trustedstores/api/js";
const s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(script, s);
})();
}, 5000);
Wow. Просто ... Спасибо. –