延迟加载第三方服务?
Lazy-Loading 3rd Party Service?
有一个帮助服务,我可以将它放在我主页 body
部分的底部来加载:
<script async type="text/javascript">
!function (e, t, n) {
function a() {
var e = t.getElementsByTagName("script")[0], n = t.createElement("script");
n.type = "text/javascript", n.async = !0, n.src = "https://beacon-v2.helpscout.net", e.parentNode.insertBefore(n, e)
}
if (e.Beacon = n = function (t, n, a) {
e.Beacon.readyQueue.push({method: t, options: n, data: a})
}, n.readyQueue = [], "complete" === t.readyState) return a();
e.attachEvent ? e.attachEvent("onload", a) : e.addEventListener("load", a, !1)
}(window, document, window.Beacon || function () {
});
</script>
但以这种方式加载它会减慢初始页面加载时间并降低我的 Lighthouse 分数。
我想等到我的页面完成加载后再调用此代码。
是否可以在 React useEffect()
中获取与 运行 相同的代码?
我设置了一个 useInterval()
以在初始页面加载完成后调用此代码:
// https://overreacted.io/making-setinterval-declarative-with-react-hooks/
useInterval(() => {
loadHelpChat();
}, 2000);
function loadHelpChat(){
if (typeof(Beacon) !== "undefined") return;
!function (e, t, n) {
function a() {
var e = t.getElementsByTagName("script")[0], n = t.createElement("script");
n.type = "text/javascript", n.async = !0, n.src = "https://beacon-v2.helpscout.net", e.parentNode.insertBefore(n, e)
}
if (e.Beacon = n = function (t, n, a) {
e.Beacon.readyQueue.push({method: t, options: n, data: a})
}, n.readyQueue = [], "complete" === t.readyState) return a();
e.attachEvent ? e.attachEvent("onload", a) : e.addEventListener("load", a, !1)
}(window, document, window.Beacon || function () {
});
}
似乎延迟加载 2 秒(即发送到 useInterval()
的 2000 参数)使 Lighthouse 相信 loadHelpChat()
不应被视为初始页面加载的一部分。
有一个帮助服务,我可以将它放在我主页 body
部分的底部来加载:
<script async type="text/javascript">
!function (e, t, n) {
function a() {
var e = t.getElementsByTagName("script")[0], n = t.createElement("script");
n.type = "text/javascript", n.async = !0, n.src = "https://beacon-v2.helpscout.net", e.parentNode.insertBefore(n, e)
}
if (e.Beacon = n = function (t, n, a) {
e.Beacon.readyQueue.push({method: t, options: n, data: a})
}, n.readyQueue = [], "complete" === t.readyState) return a();
e.attachEvent ? e.attachEvent("onload", a) : e.addEventListener("load", a, !1)
}(window, document, window.Beacon || function () {
});
</script>
但以这种方式加载它会减慢初始页面加载时间并降低我的 Lighthouse 分数。
我想等到我的页面完成加载后再调用此代码。
是否可以在 React useEffect()
中获取与 运行 相同的代码?
我设置了一个 useInterval()
以在初始页面加载完成后调用此代码:
// https://overreacted.io/making-setinterval-declarative-with-react-hooks/
useInterval(() => {
loadHelpChat();
}, 2000);
function loadHelpChat(){
if (typeof(Beacon) !== "undefined") return;
!function (e, t, n) {
function a() {
var e = t.getElementsByTagName("script")[0], n = t.createElement("script");
n.type = "text/javascript", n.async = !0, n.src = "https://beacon-v2.helpscout.net", e.parentNode.insertBefore(n, e)
}
if (e.Beacon = n = function (t, n, a) {
e.Beacon.readyQueue.push({method: t, options: n, data: a})
}, n.readyQueue = [], "complete" === t.readyState) return a();
e.attachEvent ? e.attachEvent("onload", a) : e.addEventListener("load", a, !1)
}(window, document, window.Beacon || function () {
});
}
似乎延迟加载 2 秒(即发送到 useInterval()
的 2000 参数)使 Lighthouse 相信 loadHelpChat()
不应被视为初始页面加载的一部分。