我一点也不了解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
等,但都无法正常工作。基本上,它没有给出预期的结果。我已经快找到我的答案了..请帮忙!
答案 0 :(得分:0)
首先,除非有充分的技术理由要这样做,否则不要这样做。这是互联网;让人们随心所欲地访问您的页面。
第二,相反地,这样做可能更容易-在网络上拥有一组正常的页面,但是如果在应用程序中访问了这些页面,则应用程序会检测到它们,并导航到特定于应用程序的版本。
最后,如果这样做,为了轻松处理多个用户代理,您需要创建一个数组,其中包含所需的所有用户代理字符串,然后遍历它们以检查每个字符串。遵循您最喜欢的有关数组,循环等的JavaScript教程。
答案 1 :(得分:0)
来自论坛的一些人也帮助了我,我设置了错误的用户代理(我在应用中定义的代理与在此脚本中键入的代理不同)。因此,代码如下:
<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>
中。