Tripadvisor小部件无法加载ajax页面加载

时间:2013-10-29 14:36:03

标签: javascript jquery widget

我正在尝试将Tripadvisor小部件(rave)添加到我的页面,该页面通过Ajax加载。 这是小部件代码:

<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 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

解决方案:

$.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();
    }
  });

答案 2 :(得分:0)

在类似场景中我不得不采用的最佳解决方案基于以下逻辑:

只需调用tripavisor脚本一次,然后在用户登陆的页面上将小部件加载到隐藏的html元素中(因此页面不会被ajax请求呈现)。

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

答案 3 :(得分: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 ,因此 对我来说,脚本网址看起来像这样:

https://www.tripadvisor.com/WidgetEmbed-cdsratingsonlynarrow