簡體   English   中英

根據useragent重定向用戶

[英]Redirect user based on useragent

我一點都不懂JavaScript。 但是,我制作了一個Android應用程序,其中使用WebView加載網頁。 我在菜單中有一個“共享”選項,允許共享隨后在WebView中加載的URL。

對於特定頁面,我希望不使用該應用程序的用戶重定向到其他頁面。 為了實現這一點,我的Android應用程序使用了自定義用戶代理(在這種情況下為CustomUA)。 因此,每當我的應用程序加載此特定網頁(例如page1.html)時,我都希望它正常加載到應用程序內部。 但是,假設該URL是共享的,那么我希望將該URL重定向為page2.html,如果使用任何瀏覽器對其進行了訪問。 基本上,我只希望我的應用程序的UA能夠訪問page1.html,而其他所有UA都將重定向到page2.html。

我想可以在閱讀其他解決方案時使用JavaScript來完成此操作。 我無法實現這些功能,因為它們不完全是我的情況,而且我不確定如何實現它們。 我想,我只需要將該腳本放在頁面的正文中?

另外,以防萬一,如果我應該在白名單中包含多個用戶代理(即,如果我希望CustomUA和CustomUA 2都能夠訪問該網頁),該如何修改代碼?

編輯:

我發現此代碼包含在<head>

<script>

if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0))
{
    window.location.replace("your page");
}
else 
{
   window.location.replace("your page");
}

</script>

現在,有人可以幫我根據我的需求進行修改嗎? 如果我不是自定義用戶代理,我只希望重定向該網頁,如果不是,請保留在同一頁面上。

編輯:

我使用了這樣的代碼:

<script>

if ((navigator.userAgent.indexOf('customUA') < 0)
{
window.location.replace("page2.html");
}

</script>

但是,我收到了Uncaught SyntaxError:意外的令牌{在控制台中錯誤,並且重定向無法正常工作。

編輯:

解決了未捕獲的錯誤。 新代碼:

<script type="text/javascript">
if (navigator.userAgent.indexOf('customUA') >= 0)
{
window.location.replace("page2.html");
}
</script>

現在,無論哪種方法都可以正常工作,例如,它將重定向到我不希望的位置,反之亦然。 我嘗試了多個表達式,例如< 0> 0== -1等。 基本上,它沒有給出預期的結果。 我已經快找到我的答案了..請幫助!

首先,除非有充分的技術理由要這樣做,否則不要這樣做。 這是互聯網; 讓人們隨心所欲地訪問您的頁面。

其次,以另一種方式執行此操作可能會更容易-在網絡上擁有一組常規頁面,但是如果在應用程序中訪問了這些頁面,則應用程序會檢測到它們,並導航到特定於應用程序的版本。

最后,如果您這樣做,則為了輕松處理多個用戶代理,您需要創建一個包含所需所有用戶代理字符串的數組,然后遍歷它們以檢查每個字符串。 遵循您最喜歡的關於數組,循環等的JavaScript教程。

還有一個論壇的人幫助了我,我設置了錯誤的用戶代理(我在應用程序中定義的代理與在此腳本中鍵入的代理不同)。 因此,代碼如下:

<script type="text/javascript">
var uaCheck = navigator.userAgent.indexOf('Custom User Agent');
if (uaCheck == -1)
{
window.location.replace("https://www.domain.tld/redirected-page.html");
}
</script>

如果有多個用戶代理,則這是代碼:

<script type="text/javascript">

function isMyAppUA(testUA)
{
    if(testUA == undefined) return false;

    var appUAList = 
    [
        'customUA1', 'customUA2', 'customUA3', ..., 'customUAn'
    ];

    appUAList.forEach((ua) => 
    {
        if(testUA.indexOf(ua) > -1) 
        {
            return true;
        }
    });
    return false;
}

if(!isMyAppUA(navigator.userAgent)) 
{
    window.location.replace("https://www.domain.tld/redirected-page.html");
}

</script>

如果用戶代理列表較小,則此代碼的版本較短:

<script type="text/javascript">

if (navigator.userAgent.indexOf('customUA') == -1 || navigator.userAgent.indexOf('customUA2') == -1) 
{
    window.location.replace("https://www.domain.tld/redirected-page.html");
}

</script>

這些代碼中的任何一個都放在HTML頁面的<head>中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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