javascript - 推迟 Trip Advisor 脚本

标签 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 的代码供引用:

<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>

最佳答案

您无法推迟使用 document.write() 的 as 脚本的加载。 document.write() 的本质意味着它必须在解析器位于文档中的正确位置时执行,这意味着您通常无法更改使用它的脚本所在的位置,并且当它被加载时。

此外,一旦文档被解析,document对象就会被关闭,然后任何 future 的document.write()都会清除当前文档并打开一个新的空文档文档。因此,如果在延迟脚本中执行 document.write() 就会发生这种情况。

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

关于javascript - 推迟 Trip Advisor 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401580/

相关文章:

javascript - NodeJS - Mongoose,subdoc 对象没有方法 .id() 或 .create()

c# - 如何在using语句中调用异步wcf方法?

performance - Haskell:代码运行太慢

MySQL 查询运行*非常*慢

javascript - 多重依赖 promise 链

.net - .NET 中的单元测试 System.Threading.Timer

javascript - Three.js 3D 文字弯曲

javascript - Vue.js 使用父数据渲染子组件

javascript - 如何在 Meteor 中进行简单的数据库查询

python - 在 pandas 数据框中查找每行的两个列列表中哪一个是真的最快方法