Normalement, lorsqu'une page est chargée et que le navigateur a désactivé le Javascript, nous utilisons la fonction <noscript>
pour écrire quelque chose comme un avertissement et dire au client d'activer Javascript. Cependant, Facebook, même après vous chargez la page avec JS activé, dès qu'il est désactivé vous recevez une notification. Comment puis-je faire quelque chose comme ça ?
MISE À JOUR : Ce mécanisme n'est plus disponible dans Facebook, mais il l'était auparavant. J'ai posé cette question trop tard, mais si une réponse est trouvée, je l'apprécierais vraiment.
Ce que j'ai essayé
J'ai pensé avoir un segment à l'intérieur de ma page qui continue à vérifier si le Javascript est désactivé, et si oui, montrer le contenu du fichier <noscript>
.
Pour réaliser cela, j'ai créé une page CheckJS.html .
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0">
</head>
<body>
<noscript>
JS is disabled!
</noscript>
</body>
</html>
Cette page va continuer rafraîchissant lorsque JS est désactivé, JS est désactivé ! apparaîtra.
Pour ajouter cette page à l'intérieur de ma page originale. J'ai essayé ce qui suit :
1- .load()
J'ai utilisé JQuery à .load('CheckJS.html')
à l'intérieur d'un div
. Cependant, il semble que .load()
ne charge que le contenu du fichier <body>
de CheckJS.html . Signifie que le <head>
et ce qui s'y trouve ne sera pas chargé dans l'élément div
.
2- iframe
Après quelques recherches, j'ai découvert que la seule façon possible de charger une COMPLET page html y compris <head>
est d'utiliser un <iframe>
.
<iframe src="CheckJS.html"></iframe>
Cependant, le <meta http-equiv="refresh" content="0">
de CheckJS.html affecte la page parent, la page originale elle-même a commencé à se rafraîchir.
Si nous sommes capables d'utiliser cette <iframe>
sans forcer l'actualisation de la page d'origine, cela pourrait être une solution, mais même si cette solution est trouvée, j'ai l'impression qu'il s'agit plutôt d'un problème de sécurité. astuce plutôt qu'un réel solution.
UPDATE
Antony Réponse de la Commission a prouvé que j'avais tort sur le fait que le iframe
rafraîchit la page d'origine, le navigateur montre qu'il s'agit d'un rafraîchissement, mais en réalité, ce n'est pas le cas. Si c'est le cas, Javascript peut être évité. CheckJS.html
que j'ai fourni fait l'affaire, et mieux encore, les <noscript>
sera caché lorsque JS sera réactivé. Cependant, l'approche iframe n'est pas très conviviale (elle peut bloquer le navigateur), à moins que le rafraîchissement ne se produise toutes les 10 secondes environ, ce qui n'est pas un problème. détection instantanée .