[英]Laravel 5 Javascript Enabled/Disabled Detection
我應該在laravel 5中檢測到瀏覽器是否支持Javascript。據我所知,我必須使用。 但我不確定哪個是我可以在laravel 5中使用的第一個php文件?
我應該將它包含在public / index.php中嗎? 看起來不正確。 期待你的幫助。
你不能用PHP做到這一點。 您可以在HTML中使用<noscript>
標記。
以下是如何做到這一點:
<noscript>
This page needs JavaScript activated to work.
</noscript>
如果未啟用JS,則將執行HTML文檔中的代碼塊。 您可以將其放在刀片模板中。
這可能與其他有關javascript檢測的問題重復,您可以在此處找到答案。 從谷歌搜索我發現github上可能有一些使用鏈接的東西 。 它似乎支持檢查JavaScript支持。 它可能正在使用我向您展示的stackoverflow鏈接中找到的相同技術。
手動方式可以通過重定向到像這樣的cookie拾取器來完成
的index.php
<?php
if(isset($_COOKIE["javascript_checked"]))
{
$GLOBALS["javascript_enabled"] = isset($_COOKIE["javascript_enabled"]) ? true : false;
}
else
{
setcookie("javascript_check_original_request", "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"], time()+3600);
header("Location: http://" . $_SERVER["HTTP_HOST"] . "/detectjs.php.php");
exit;
}
var_dump($GLOBALS["javascript_enabled"]); // prints out the result
detectjs.php
<?php
setcookie("javascript_checked", "true", time()+3600);
?>
<meta http-equiv="refresh" content="1;url=<?php echo $_COOKIE["javascript_check_original_request"]; ?>" />
<script type="text/javascript">
/**
* A function to simplify the process of creating a cookie
* @param string name
* @param string value
* @param int days
*/
function createCookie(name,value,days) {
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
createCookie("javascript_enabled", "true", 1); // creates a cookie that says javascript is enabled for 1 day
</script>
這將檢查cookie以查看cookie拾取是否已經發生,如果沒有,那么它將重定向到設置cookie發送cookie的頁面,如果啟用了javascript,則javascript將創建一個cookie聲明它已啟用。 然后,它將重定向回原始請求,以便除了第二次延遲之外,用戶不會注意到detectjs腳本重定向回原始請求所需的差異。
現在檢查已經完成,php可以在$ GLOBALS變量中存儲一個布爾值,該變量包含一個布爾值,用於是否啟用了javascript。 您可以在laravel中的任何php文件中引用此選項,以便在啟用或不使用javascript時做出決定
if($GLOBALS["javascript_enabled"])
{
}
else
{
}
這可以通過上述過程輕松完成,但如果您想使用我鏈接的laravel庫,那么您將獲得更多權力。
雖然您不能單獨依賴PHP來檢測Javascript是否已啟用,但您可以使用Javascript來幫助檢測是否啟用了Javascript。
Javascript可以設置cookie。 因此,如果用戶沒有cookie,那么很好地表明Javascript未啟用。 如果用戶確實擁有cookie,那么用戶可能已啟用Javascript。 (雖然你不能百分百肯定。)
<script>
window.onload = function() {
document.cookie = "hasjs=true";
}
</script>
現在您可以使用PHP來檢查cookie是否存在。
if ($_COOKIE['hasjs'] == 'true') {
// js enabled.
}
Javascript也可以提出請求 。 您可以向“隱藏”的PHP腳本發出get請求。 如果腳本從未收到get,則表明Javascript未啟用。 如果腳本收到get,則用戶可能啟用了Javascript。 (但同樣,你不能百分百肯定。)
<script>
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "/detectjs", true);
xmlHttp.send(null);
</script>
收到GET后,您可以記下此用戶已啟用javascript以供將來參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.