【问题标题】:How to get current url user is in .jsp file using javascript or java如何使用 javascript 或 java 获取当前 url 用户在 .jsp 文件中
【发布时间】:2019-07-26 21:54:27
【问题描述】:

我想比较用户所在的当前 url,如果它等于 3 个不同的 url,它应该写一个特定的元标记,如果不是,它应该写另一个元标记。但是当我编写我的 javascript 时,它会将所有代码写为字符串而不是执行

这就是我在 .jsp 文件中尝试的内容

<script type = "text/javascript">
    if(window.location.href == ("https://www.farmers.com/sitemap/"||"https://www.farmers.com/contact-us/send-message/" || "https://www.farmers.com/payments/") ) {
        document.write('<META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">');
    } else {
        document.write('<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">');
    }
</script>

当我看到我得到的查看页面源代码时,它永远不会执行

<script type = "text/javascript">
    if(window.location.href == ("https://www.farmers.com/sitemap/"||"https://www.farmers.com/contact-us/send-message/" || "https://www.farmers.com/payments/") ) {
        document.write('<META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">');
    } else {
        document.write('<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">');
    }
</script>

我希望能够确定我所在的 url,一旦用户检查查看页面源,他们就可以看到他们所在的特定 url 的特定元标记。 这应该用 java 还是 javascript 编写? 如何让 javascript 执行并写入视图页面源代码?

这是我的jsp文件

<%--

  ==============================================================================

  headlibs.jsp includes the scripts and css to be included in the head tag.

  ==============================================================================

--%><%@include file="/libs/foundation/global.jsp"%><%
%>

<cq:includeClientLib css="falcon.base.bootstrap.rwd"/>

<script type = "text/javascript">
    if(window.location.href == ("https://www.farmers.com/sitemap/"||"https://www.farmers.com/contact-us/send-message/" || "https://www.farmers.com/payments/") ) {
        document.write('<META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">');
    } else {
        document.write('<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">');
    }
</script>



<script language="javascript1.2" src="/etc/designs/falcon/rwd/clientlibs_base/js/at.js"></script>

<script type="text/javascript" src="/etc/designs/falcon/rwd/clientlibs_base/js/respond.js">  
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【问题讨论】:

  • 您需要隐式比较每个字符串。此外,机器人可能不会执行 javascript,因此您的元数据不应该在 javascript 中。
  • 但是它把我的整个脚本部分写成一个字符串,一旦我看到查看页面源代码,我需要用一些东西封装我的javascript

标签: javascript java jsp url jstl


【解决方案1】:

如果您只需要它在现代浏览器中工作,那么您可以这样做...

["https://www.farmers.com/sitemap/","https://www.farmers.com/contact-us/send-message/","https://www.farmers.com/payments/"].includes(window.location.href);

请参阅 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes 了解适用于旧版浏览器的 polyfill。

如果您不想处理 polyfill,也可以使用以下代码:

["https://www.farmers.com/sitemap/","https://www.farmers.com/contact-us/send-message/","https://www.farmers.com/payments/"].join('').indexOf("https://www.farmers.com/payments/");

一旦到位,我想您很快就会意识到这种类型的基本检查无法解决许多边缘情况...您最终可能会询问有关 RegEx 或模式匹配的其他问题.

【讨论】:

  • 我的问题不是 javascript 逻辑,而是当我将任何 javascript 放入我的 .jsp 文件时。它实际上将包括 在内的整个 javascript 代码打印为字符串
猜你喜欢
  • 2010-11-05
  • 2014-04-26
  • 2013-10-09
  • 2010-10-26
相关资源
最近更新 更多