我正在尝试将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&uniq=869&locationId=946177&lang=en_US&border=true&shadow=true&backgroundColor=white"></script>
仅当页面第一次加载时才会加载。但是在ajax加载后它没有。
我尝试使用jQuery的getScript函数,但它没有帮助。在再次执行脚本之前,甚至手动删除添加的脚本链接节点也无济于事。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
也许html iframe是一种方法。
离。
<iframe src="tripadvisor.php" scrolling="no" frameborder="0"></iframe>
<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&uniq=869&locationId=946177&lang=en_US&border=true&shadow=true&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