0

我正在尝试向通过 Ajax 加载的页面添加 Tripadvisor 小部件(狂欢)。这是小部件代码:

<div id="TA_cdsscrollingravewide869" class="TA_cdsscrollingravewide">
    <ul id="1NcDZBZ" class="TA_links 8dTZRew">
    <li id="ZweVlS" class="3cqMCWiB">Read 37 reviews of <a target="_blank" href="http://www.tripadvisor.com/Restaurant_Review-g188590-d946177-Reviews-Bond-Amsterdam_North_Holland_Province.html" onclick="ta.cds.handleTALink($cdsConfig.getMcid()); return true;">Bond</a></li>
    </ul>
    </div>
    <script src="http://www.jscache.com/wejs?wtype=cdsscrollingravewide&amp;uniq=869&amp;locationId=946177&amp;lang=en_US&amp;border=true&amp;shadow=true&amp;backgroundColor=white"></script>

仅当页面第一次加载时才会呈现。但是在ajax加载之后它不会。

我尝试使用 jQuery 的 getScript 函数,但没有帮助。即使在再次执行脚本之前手动从头部删除添加的脚本和链接节点也无济于事。

谁能帮我解决这个问题?

4

4 回答 4

2

解决方案:

$.getScript('//www.tripadvisor.fr/WidgetEmbed-selfserveprop?nreviews=6&uniq=&iswide=true&locationId=' + tid + '&rating=true&popIdx=true&border=false&writereviewlink=true&lang=fr', function() {
    if (typeof(window.taValidate) != 'undefined') {
      window.taValidate();
    }
  });
于 2013-11-21T20:50:21.627 回答
2

也许 html iframe 是一种方法。

前任。

<iframe src="tripadvisor.php" scrolling="no" frameborder="0"></iframe>

tripadvisor.php

<div id="TA_cdsscrollingravewide869" class="TA_cdsscrollingravewide">
<ul id="1NcDZBZ" class="TA_links 8dTZRew">
<li id="ZweVlS" class="3cqMCWiB">Read 37 reviews of <a target="_blank" href="http://www.tripadvisor.com/Restaurant_Review-g188590-d946177-Reviews-Bond-Amsterdam_North_Holland_Province.html" onclick="ta.cds.handleTALink($cdsConfig.getMcid()); return true;">Bond</a></li>
</ul>
</div>
<script src="http://www.jscache.com/wejs?wtype=cdsscrollingravewide&amp;uniq=869&amp;locationId=946177&amp;lang=en_US&amp;border=true&amp;shadow=true&amp;backgroundColor=white"></script>
于 2015-11-12T03:54:34.747 回答
0

在类似情况下我不得不采用的一个远非最佳解决方案是基于以下逻辑:

只调用一次tripavisor 脚本并将小部件加载到用户登陆的任何页面上的隐藏html 元素中(因此该页面不会由ajax 请求呈现)。

当您希望放置小部件的页面被ajax调用时,如果请求成功完成,请检查小部件是否已经在DOM中,将其克隆并注入或附加到ajax生成的html片段中。

于 2015-02-03T00:26:06.240 回答
0

我找到了另一个解决方案。如果您在页面上有小部件 HTML,或者如果您通过 jQuery 将它添加到页面,例如这个:

<div id="TA_cdsscrollingravewide869" class="TA_cdsscrollingravewide">
<ul id="1NcDZBZ" class="TA_links 8dTZRew">
<li id="ZweVlS" class="3cqMCWiB">Read 37 reviews of <a target="_blank" href="http://www.tripadvisor.com/Restaurant_Review-g188590-d946177-Reviews-Bond-Amsterdam_North_Holland_Province.html" onclick="ta.cds.handleTALink($cdsConfig.getMcid()); return true;">Bond</a></li>
</ul>
</div>

您可以在下面执行此脚本,它将加载小部件:

$.getScript("https://www.tripadvisor.com/WidgetEmbed-cdsscrollingravewide", function(){
    if (typeof(window.taValidate) != 'undefined') {
      window.taValidate();
    }
});

请注意,例如在我的情况下,小部件类是 TA_ cdsratingsonlynarrow,所以对我来说,脚本 URL 如下所示:

https://www.tripadvisor.com/WidgetEmbed-cdsratingsonlynarrow
于 2019-09-25T08:45:38.323 回答