Cómo verificar si un recurso css/js está incluido en head
Frecuentes
Visto 3,869 veces
4
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
<script src="myscript.js"></script>
</head>
Me gustaría tener una función que verifique si un recurso está incluido en el encabezado
checkIfHeaderHas('myscript.js'); // would return true
checkIfHeaderHas('mystyle.css'); // would return true
checkIfHeaderHas('mybla.css'); // would return false
Pero me pregunto cómo puedo buscar en la cabeza un nombre de archivo. (en el 'src' si es javascript, o en el 'href' si es un css)
4 Respuestas
7
Hice una pequeña función que hace lo que quieres. Recorre todo <link>
y <script>
elementos hasta que encuentre un script con ese nombre. Si no es así, devuelve falso.
function checkIfIncluded(file) {
var links = document.getElementsByTagName("link");
for(var i = 0; i < links.length; i++) {
if (links[i].href.substr(-file.length) == file)
return true;
}
var scripts = document.getElementsByTagName("script");
for(var i = 0; i < scripts.length; i++) {
if (scripts[i].src.substr(-file.length) == file)
return true;
}
return false;
}
console.log(checkIfIncluded("mystyle.css"));
console.log(checkIfIncluded("myscript.js"));
console.log(checkIfIncluded("mybla.css"));
Tenga en cuenta que esto no solo encontrará recursos en el <head>
, pero en todo el documento. Si realmente necesitas mirar dentro de la cabeza, dímelo y pensaremos en otra cosa.
contestado el 02 de mayo de 12 a las 19:05
esto también funciona muy bien, pero el recorrido no fue tan elegante como la solución que elegí: Interfaz de usuario de Shai
Es bueno que tenga la ventaja de no depender de jQuery: lilHar
esta debería haber sido la respuesta seleccionada ya que la respuesta seleccionada real es para css
solamente y el enfoque seleccionado no funcionará para js
si es necesario js
El archivo es en sí mismo un jquery
archivo que debe verificarse, +1 para esta respuesta. - Muhammad Ömer Aslam
Casi bien, pero hay problemas con los recursos como file.js?v=7
. Todavía +1 por no usar jQuery. - ViliusL
7
Si está usando jQuery, tal vez podría hacer algo como:
var checkIfHeaderHas = function(fileName) {
// Start with CSS.
$.each($("header link"), function() {
if ($(this).attr("href").toLowerCase() === fileName.toLowerCase())
return true;
});
// Then JavaScript.
$.each($("header script"), function() {
if ($(this).attr("src").toLowerCase() === fileName.toLowerCase())
return true;
});
// Default response.
return false;
}
Disculpas por cualquier cosa que no esté del todo bien. Estoy eliminando esto de mi teléfono y no tuve tiempo de probarlo.
contestado el 02 de mayo de 12 a las 19:05
¿Qué pasa si necesito comprobar el jquery
archivo en sí mismo y si aún no está cargado, ¿no fallará en ese momento? como $
no será reconocido - Muhammad Ömer Aslam
Tenga en cuenta que a pesar de los (7) votos a favor, esto no funciona, siempre devuelve falso. Aquí hay un solución de trabajo - SC1000
4
Usar .length en jquery funcionaría para esto. (¡No probado!)
Simplemente verifique si existe un elemento con el atributo href establecido en la URL de su archivo CSS:
if (!$("link[href='/path/to.css']").length){
alert('not loaded');
}else{
alert('loaded!');
}
contestado el 02 de mayo de 12 a las 19:05
0
Aquí hay una solución funcional (probada):
function checkIfHeaderHas(name) {
const checks = [
{attr: 'href', items: $("head link")},
{attr: 'src', items: $("head script")}
// add any other if needed...
];
let res = false;
if (typeof name === 'string') {
const lc = name.toLowerCase();
for (let i = checks.length - 1; i >= 0; i--) {
$.each(checks[i].items, function () {
if (($(this).attr(checks[i].attr) || '').toLowerCase() === lc) {
res = true;
return false; // exit the loop as soon as found
}
})
}
}
return res;
}
Respondido 13 Jul 20, 18:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript html css or haz tu propia pregunta.
Entonces, ¿solo quiere saber si han sido incluido en la página o también si están completamente cargados? Porque esos son dos problemas muy diferentes. - Alex Turpin
Para js, puede simplemente definir una variable (o constante) dentro del archivo .js y verificar si está definida en la página. - Aziz
@ Xeon06, incluido en la página - Shai UI