【问题标题】:Show text only if page url contain specific word仅当页面 url 包含特定单词时才显示文本
【发布时间】:2019-01-03 04:09:38
【问题描述】:

只有当 URL 包含特定单词时,我才需要在一页上显示一些文本。我尝试了几个在 stackoverflow 上找到的示例,但似乎没有任何效果。

所以我需要在这个 URL 上显示文本 - “/index.php?option=com_registration&task=register”

我尝试编写代码来识别 URL 中的“注册”一词,但它不起作用。文本在所有页面上可见。

编辑:我要显示的文字是“创建帐户会自动将您添加到我们的双月通讯电子邮件列表中。请注意:您可以随时取消订阅。”

它应该位于页面上的每个内容之前。

【问题讨论】:

  • “文本在所有页面上可见”是什么意思?
  • @Dumisani 我尝试了几个示例,文本在每一页上始终可见。我需要它只在 URL 包含单词“注册”的页面上可见

标签: javascript php joomla


【解决方案1】:

您的网址是 - “/index.php?option=com_registration&task=register” 如果你是用 php 来做的

<?php 
  $check = $_GET['task'];
  if(isset($check)){
     #do something...
  }
?>

重点是从 url 获取查询并检查它是否已设置,您是使用 GET 方法进行的,因此您将使用 $_GET['parameterName'] 获取它,变量 $check 将分配参数的值价值

【讨论】:

  • 你能给我完整的代码吗?我收到此错误:解析错误:语法错误,第 75 行 *** 中的意外 T_STRING
  • 这就是你所需要的------------尝试使用 $_REQUEST['task'] 而不是 $_GET['task']
  • 谢谢!那行得通! :)
  • Joomla 有帮助开发人员维护站点安全的辅助方法。 $_GET 不应在 Joomla 应用程序中使用。
【解决方案2】:

我真的很喜欢@31piy 的回答,不过如果你必须支持 Internet Explorer 并且不想为了简单的 URL 匹配而添加整个库,你总是可以使用好的旧正则表达式甚至 indexOf

例如,您可以将 RegEx 用于“注册”或“任务=注册”。

如果你想进行简单的比较(例如包含task=register),那么我会选择字符串比较:

if (window.location.href.indexOf('task=register') !== -1) {
    // show text here
}

如果您想在匹配方面更加灵活,您应该使用正则表达式:

var regex = /task=register/;

if (regex.test(window.location.href)) {
    // show text here
}

有关正则表达式的更多信息,我强烈建议使用解释工具,例如 this one

【讨论】:

  • 这应该在服务器端完成,而不是客户端,原因之一是浏览器的支持
【解决方案3】:

您可以使用URL API 解析浏览器的位置URL,然后搜索task 参数的值。如果匹配register,则执行逻辑以显示文本。

var url = new URL(window.location.href);

if (url.searchParams.task === 'register') {
  // perform logic to show the text
}

请注意,Internet Explorer 中不提供 URL API。这种情况需要手动解析URL参数,或者使用第三方库,如URI.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多