gpt4 book ai didi

asp.net - 从页面中删除重复的脚本

转载 作者:行者123 更新时间:2023-12-02 20:46:12 26 4
gpt4 key购买 nike

我正在尝试利用雅虎卓越性能规则:avoiding duplicate script

为此,我希望能够在将脚本注入(inject)页面之前知道脚本是否已添加到页面中。看起来我无法弄清楚在 ASP.NET 代码后面添加了什么,除非我在页面中添加了脚本管理器。但我想避免使用 asp.net AJAX。从规则的描述来看,这在 php 中似乎是可能的。

假设我无法在后面的代码中进行检查,我正在考虑使用 jQuery $.getString 函数,但它在获取脚本之前不会进行检查。如果我要选择 javascript 文件,我是否必须解析整个 http 响应才能确定页面上加载了哪个脚本?

最佳答案

如果页面正在使用 ASP.NET Page.ClientScript Register API 注册脚本,则您可以使用 Page.ClientScript.IsClientScriptIncludeRegistered。另一方面,如果您正在使用这些 API,则实际上不需要调用它,因为它已经确保每个 API 中只注册了一个。

http://msdn.microsoft.com/en/us/library/system.web.ui.clientscriptmanager.isclientscriptincluderegistered.aspx

如果页面在标记中只有静态的常规 ole 脚本元素,并且您需要检测客户端是否加载了脚本,则必须获取页面上的所有脚本元素并查看它们的 .src值(value)观。问题在于,某些浏览器会自动将该 url 解析为完整路径,而不仅仅是您声明的路径。因此,您可以通过多种方式来解释这一点 - 您可以只搜索作为您想要的脚本的字符串末尾,或者您可以通过将其设置为动态创建的 URL 来解析您想要比较的 url script 元素(您从未将其添加到 DOM,但仍然会为您解析)。

这只是我的想法,如果我弄错了,抱歉:

var s = document.createElement("script");
s.src = "foo.js";

var loaded, scripts = document.getElementsByTagName("script");
for (var i = 0; i < scripts.length; i++) {
if (scripts[i].src === s.src) {
loaded = true;
break;
}
}
if (loaded) {
// this script is already loaded
// assuming you dont have multiple copies in different locations
}

关于asp.net - 从页面中删除重复的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com