簡體   English   中英

Laravel 5 Javascript啟用/禁用檢測

[英]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文檔中的代碼塊。 您可以將其放在刀片模板中。

w3schools.com中的<noscript>標簽

這可能與其他有關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

Javascript可以設置cookie。 因此,如果用戶沒有cookie,那么很好地表明Javascript未啟用。 如果用戶確實擁有cookie,那么用戶可能已啟用Javascript。 (雖然你不能百分百肯定。)

<script>
window.onload = function() {
    document.cookie = "hasjs=true";
}
</script>

現在您可以使用PHP來檢查cookie是否存在。

if ($_COOKIE['hasjs'] == 'true') {
    // js enabled.
}

使用Javascript發出GET請求

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM