1

如果我直接在 HTML 页面上添加了 TrustPilot html 代码,它可以正常工作,但我需要使用 jQuery 插入它。插入时我看到了 HTML 代码,但没有显示。

  $(window).on('load', function () {
    var el = $('#some-element');

    el.html( trustPilotHtml() );

    function trustPilotHtml() {
      var str = "<div " +
        "class='trustpilot-widget' " +
        "data-locale='en-GB' " +
        "data-template-id='123456' "+
        "data-businessunit-id='123456' " +
        "data-style-height='500px' " +
        "data-style-width='100%' " +
        "data-theme='light' " +
        "data-stars='4,5' " +
        "data-schema-type='Organization'>" +
        "<a " +
        "href='https://some-url.com' target='_blank'>Trustpilot</a> " +
      "</div>";
      return $(str);
    }
});

让元素正确显示的唯一方法是直接插入到没有javascript的HTML中吗?

4

2 回答 2

5

不,这不是唯一的方法。

您应该在 HTML 的 HEAD 部分(或靠近它)中有一个引导脚本。该脚本负责初始化 HTML 中的所有小部件(Trustpilot 术语中的 TrustBoxes)。

当然,如果您动态地注入 HTML,这将不起作用,因此window.Trustpilot.loadFromElement(trustbox);如果您需要,也可以调用您自己。

trustbox是一个 HTMLElement,您可以通过 usingdocument.getElementById("some-element")或类似方法获得。

参考: https: //support.trustpilot.com/hc/articles/115011421468

于 2018-04-24T15:15:01.373 回答
2

以下内容在产品列表页面上为我工作,该页面通过 ajax 返回过滤列表

var element = document.getElementsByClassName("trustpilot-widget");
for(var i=0; i<element.length; i++) {
    window.Trustpilot.loadFromElement(element[i]);
}

在第一个页面加载时,所有产品评论都按预期显示,但如果页面通过 ajax 调用(例如使用过滤器)更新,评论就会丢失。在 ajax 之后运行上面的代码,重新加载评论

于 2020-02-20T11:51:43.080 回答