【发布时间】:2016-08-05 19:21:34
【问题描述】:
本周,我开始为一位经营旅游公司的家庭成员开发我的第一个 WordPress 网站,并且我决定从头开始构建一个非常过时的网站。
在我决定将他的一些 TripAdvisor 小部件添加到页面之前,一切都很顺利。
小部件加载速度非常慢,这很烦人,但最糟糕的是它们在页面加载之前执行,这会导致非常明显的挂起和糟糕的“弹出”效果,因为页面最终可以在小部件之后完成加载。
这是 TripAdvisor 小部件的示例
<div id="TA_rated837" class="TA_rated">
<ul id="MpoP9sbYWV" class="TA_links Zw2KlSEGHzT">
<li id="qvZzYWwC2J" class="3qkrdfE">
<a target="_blank" href="https://www.tripadvisor.co.uk/"><img src="https://www.tripadvisor.co.uk/img/cdsi/img2/badges/ollie-11424-2.gif" alt="TripAdvisor"/></a>
</li>
</ul>
</div>
<script src="https://www.jscache.com/wejs?wtype=rated&uniq=837&locationId=3507299&lang=en_UK&display_version=2"></script>
该标记导致另一个脚本包含在 document.write 中,该脚本只能在页面加载时执行,我收集的是删除任何现有的 HTML?
document.write( '<script src="https://www.tripadvisor.com/WidgetEmbed-rated?amp;locationId=3507299&lang=en_UK&display_version=2&uniq=837"></script>' );
当我发现可用于在页面加载后触发 docment.wite 的 PostScribe 时,我以为我找到了一种触发脚本的方法。但是由于页面已经加载,脚本无论如何都不能触发。
我还尝试复制拉入的最终函数并将其包装在我自己的函数中以在页面加载后触发。但是,要执行此操作,我必须开始编辑 TripAdvisors 小部件代码,这违反了他们的使用条款。
他们确实有一个 API,但只有超大型企业才能访问它。
我的网站目前仍然是本地网站,但我创建了一个小提琴来演示我的问题。
https://jsfiddle.net/9z1r77Le/
我希望这里有人找到了解决方法和过去,因为我确实看到过这些小部件异步加载的网站。
提前致谢!
【问题讨论】:
标签: javascript jquery wordpress widget tripadvisor