3

有没有人尝试在单个应用页面上实现谷歌可信商店徽章?

我的徽章出现在我第一次访问该页面时,但是当我转到另一个页面时,例如产品详细信息页面,徽章就会消失。

我在谷歌上找不到任何关于它的参考资料。

4

1 回答 1

1

这里同样的问题。我通读了 Google Trusted Stores 插入的脚本,他们没有提供任何公共方法来重新初始化脚本,也没有提供销毁方法来恢复他们已经对您的文档所做的更改。

作为一个肮脏的最后手段,您可以手动删除徽章和以前的脚本,然后再次包含该脚本以使其重新运行。这里有一个小警告......脚本第一次运行时,它会在窗口对象上创建一个只读属性,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);
于 2016-01-27T19:52:50.867 回答