通常、ページが読み込まれ、ブラウザで Javascript が無効になっている場合、<noscript>タグを使用して警告のようなものを記述し、クライアントに Javascript を有効にするように伝えます。ただし、Facebook では、 JS を有効にしてページを読み込んだ後でも、無効にした瞬間に通知が届きます。どうすればこのようなことができますか?
更新 : このメカニズムは Facebook では利用できなくなりましたが、以前はこの質問をするのが遅すぎましたが、答えが見つかった場合は本当に感謝しています.
私が試したこと
ページ内に Javascript が無効になっているかどうかをチェックし続けるセグメントを持つことを考えました<noscript>。
これを実現するために、ページCheckJS.htmlを作成しました。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0">
</head>
<body>
<noscript>
JS is disabled!
</noscript>
</body>
</html>
このページは更新を続けます。JSが無効になっている場合、JS は無効です。現れる。
このページを元のページ内に追加するには。私は次のことを試しました:
1- .load()
JQueryを使用し.load('CheckJS.html')てdiv. ただし、CheckJS.htmlの.load()内容しか読み込まないようです。要素とその内部にあるものは、 内にロードされないことを意味します。<body><head>div
2-iframe
いくつかの検索の後、完全なhtml ページを<head>ロードする唯一の可能な方法は、<iframe>.
<iframe src="CheckJS.html"></iframe>
ただし、CheckJS.htmlの が親ページに影響し、元のページ自体が更新され始めました<meta http-equiv="refresh" content="0">。
元のページを強制的に更新せずにこれを使用できれば、これは解決策になる可能性がありますが、この解決策が見つかったとしても、本当の解決策というよりはトリック<iframe>のように感じます。
アップデート
Antonyの答えは、元のページを更新することについて私が間違っていたことを証明しましiframeた。ブラウザは更新されていることを示していますが、実際にはそうではありませんCheckJS.html。 、<noscript>JS が再度有効になると非表示になります。それでも、この iframe アプローチ全体は、10 秒ごとに更新が行われない限り (ブラウザーがフリーズする可能性があります)、それほどユーザー フレンドリーではありません。これは即時検出ではありません。