推迟Trip Advisor脚本

时间:2016-12-30 19:20:54

标签: javascript performance asynchronous deferred

我正在尝试推迟或异步加载Trip Advisor小部件但由于某种原因它无法正常工作。

我认为异步或延迟可能无效,因为Trip Advisor脚本会执行document.write命令。

以下是Trip Advisor的小部件JS:https://www.tripadvisor.co.uk/Widgets-g186338-d187591-The_Ritz_London-London_England.html#w-selfserveprop

有人可以建议如何让这个脚本更高效吗?

以下是JSBin沙箱中的脚本 - https://jsbin.com/cawivusecu/edit?html,output

如果您尝试推迟或异步,您会发现它们似乎打破了小部件。

以下是Trip Advisor的hte代码供参考:

<div id="TA_selfserveprop20" class="TA_selfserveprop">
<ul id="wzAgNPZ2m6a" class="TA_links TEBLjL9Mu">
<li id="Cp4AmQch" class="w7hHfpS">
<a target="_blank" href="https://www.tripadvisor.co.uk/"><img src="https://www.tripadvisor.co.uk/img/cdsi/img2/branding/150_logo-11900-2.png" alt="TripAdvisor"/></a>
</li>
</ul>
</div>
<script src="https://www.jscache.com/wejs?wtype=selfserveprop&amp;uniq=20&amp;locationId=187591&amp;lang=en_UK&amp;rating=true&amp;nreviews=5&amp;writereviewlink=true&amp;popIdx=true&amp;iswide=false&amp;border=true&amp;display_version=2"></script>

1 个答案:

答案 0 :(得分:0)

您无法推迟使用document.write()的脚本加载。 document.write()的本质意味着当解析器位于文档中的适当位置时必须执行它,这意味着您经常无法更改使用它的脚本所在位置以及何时加载它。

此外,解析文档后,document对象将关闭,然后任何将来document.write()将清除当前文档并打开一个新的空文档。所以,如果在延迟脚本中执行document.write(),那将会发生什么。

如果您无法通过修改脚本来消除document.write(),那么您可能无法推迟其加载。