[英]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.