当您想到延迟加载脚本时,它们可能会派上用场。另外,我记得我曾经在脚本标签上使用 ID 来促进元内容的更改,每个状态更改(它是一个单页应用程序)。
使用脚本标签上的 ID,您可以检查特定实例上是否存在具有特定 ID 的脚本标签是否存在于 DOM 中。如果它不存在,并且如果您的路线要求它存在,则可以加载它(在某些条件下)。
假设有一个脚本需要延迟加载。让我们以一些聊天小部件为例。可能会出现这样的情况,您可能会倾向于仅在用户碰巧点击(例如,聊天按钮)时才加载聊天小部件。
在这里,您将懒惰地加载聊天。因此,可能的情况是:
“如果用户点击聊天按钮,则将聊天小部件 js 注入 DOM”。
简单吗?当然好。但是,考虑一下用户再次单击聊天按钮的情况。会发生什么?会再次注入相同的脚本,但您当然不希望这种情况发生,对吗?
所以,假设聊天小部件 js 通过以下方式进入 DOM:
<script id="chatWidgetScript" src="...whatever..."></script>
解决聊天按钮上的“第二次点击”问题的一个很好的解决方案是查看脚本是否已经存在于 DOM 中,如果存在,不要让相同的脚本两次附加到 DOM 中。
所以,您的按钮可能是:
<button onclick="loadChatWidget()"> Chat! </button>
您的 loadChatWidget() 函数可能是:
loadChatWidget(){
if(document.getElementById("chatWidgetScript")){
//chat script is already there in the DOM, no need to load it again.
return;
}
/*
if document.getElementById("chatWidgetScript") returns null, this would
mean that the chat widget isn't there in the DOM, and you might want to
load the same now.
*/
// LOAD SCRIPT HERE
}
这只是在脚本标签上使用 ID 的一种方式,它也很有用!