为啥页面 URL 或 href 中不显示 URL 参数? - Javascript

Posted

技术标签:

【中文标题】为啥页面 URL 或 href 中不显示 URL 参数? - Javascript【英文标题】:Why don't URL parameters display in the page URL or href? - Javascript为什么页面 URL 或 href 中不显示 URL 参数? - Javascript 【发布时间】:2021-12-11 10:29:33 【问题描述】:

更新: 我遇到的确切问题是,即使我自己输入 URL 参数也是 null。

我的目标是将代码参数添加到重定向 URL。让我解释。我想要一个用于开发模式的 PIN,当用户获得正确的 PIN 时,他们会重定向到带有参数的页面,让他们通过。正确的代码每分钟都会根据当前时间戳更改。如果他们尝试在没有正确参数的情况下访问 URL,或者猜错了 pin,他们会被重定向到另一个页面。现在,地址栏中没有显示 URL 参数,即使我自己输入也是如此。

我已经尝试关闭后台重定向、固定 pin 和正确参数,甚至打印密码。我只遇到了一个错误,有时是“密码”变量,您将在下面看到,它会在一分钟内变为 nil。

这是我现有的重​​定向 javascript 代码:

var today = new Date();
let day = today.getDate()
let mins = today.getMinutes()
let hour = today.getHours()
let url = new URL(window.location.href)
let user = url.searchParams.get("user")
let timestamp = day + hour + mins
let passkey = timestamp * 32
console.log(passkey)

if (user == passkey) 
  if (window.location.href == "https://stacker.owenrtcs1051.repl.co/" || window.location.href == "https://stacker.owenrtcs1051.repl.co/not-available/") 
    console.log(window.location.href)
    window.location.replace("../home?user=" + passkey)
  
 else 
  if (hour > 19 && hour < 20) 
    if (screen.width < 600) 
      window.location.replace("../not-available")
     else 
      if (window.location.href == "https://stacker.owenrtcs1051.repl.co/" || window.location.href == "https://stacker.owenrtcs1051.repl.co/not-available/") 
        console.log(window.location.href)
        window.location.replace("../home?user=" + passkey)
      
    
   else 
    if (window.location.href != "https://stacker.owenrtcs1051.repl.co/not-available") 
      window.location.replace("../not-available")
    
  

这是我现有的主页 Javascript 代码:

var today = new Date();
let day = today.getDate()
let mins = today.getMinutes()
let hour = today.getHours()
let url = new URL(window.location.href)
let user = url.searchParams.get("user")
let timestamp = day + hour + mins
let passkey = timestamp * 32

function devkey() 
  today = new Date();
  day = today.getDate()
  mins = today.getMinutes()
  hour = today.getHours()
  url = new URL(window.location.href)
  user = url.searchParams.get("user")
  timestamp = day + hour + mins
  passkey = timestamp * 32
  console.log(passkey)
  let pin = prompt("Please insert your dev key.", "")
  if (pin == "32") 
    window.location.replace("../home?user=" + passkey)
  

单击文本按钮时,调用此函数。

请提供反馈。我很想改进。 任何帮助表示赞赏!

【问题讨论】:

【参考方案1】:

我对您的代码进行了测试,它可以正常工作,我将 URL 更改为 https://www.google.com(表示成功)和 https://www.bing.com(表示错误),最后我进入了 bing。在您的网站代码中也可以正常工作。没看懂问题

编辑: 我在你的第一个函数(网站中的那个)中做了一些测试,用户总是 null,所以当第一个 if(user == passkey) 是调用,它直接到最后一个else。

  var today = new Date();
    let day = today.getDate();
    let mins = today.getMinutes();
    let hour = today.getHours();
    let url = new URL(window.location.href);
    let user = url.searchParams.get("user");
    let timestamp = day + hour + mins;
    let passkey = timestamp * 32;
    console.log("passkey:" + passkey);
    console.log("user:" + user );

     if (user == passkey) 
     if (window.location.href == "https://stacker.owenrtcs1051.repl.co/home/" || window.location.href == "https://stacker.owenrtcs1051.repl.co/not-available/") 
      console.log("first if: " + window.location.href);
      window.location.replace("../home?user=" + passkey);
    
      else 
     if (hour > 19 && hour < 20) 
       if (screen.width < 600) 
      window.location.replace("../not-available");
     else 
      if (window.location.href == "https://stacker.owenrtcs1051.repl.co/home/" || window.location.href == "https://stacker.owenrtcs1051.repl.co/not-available/") 
        console.log("second if: " + window.location.href);
        window.location.replace("../home?user=" + passkey);
      
    
      else 
      console.log("final else: " + window.location.href);
    

正如我在评论中所说,当您为用户创建与提示交互的功能时,它会起作用,因为它不再为空(只需要输入“32”即可)。

您可以执行类似 devkey 功能的操作,用户输入密码,然后您进行如下验证:

let pin = prompt("Please insert your dev key.", "")
if (pin== passkey) 
  if (window.location.href == "https://stacker.owenrtcs1051.repl.co/home/" || window.location.href == "https://stacker.owenrtcs1051.repl.co/not-available/") 
    console.log("first if: " + window.location.href);
    window.location.replace("../home?user=" + passkey);
  

【讨论】:

由于某种原因,当您在其他网站(如 google)中使用参数时,它确实有效,但在本网站中,它会重定向到没有 URL 参数的页面。我会在其他浏览器中尝试这个,看看它是否可以工作。顺便说一句,您使用什么网站或 IDE 来运行此代码?我使用 replit.com。 我编辑了我的答案,希望对你有帮助!

以上是关于为啥页面 URL 或 href 中不显示 URL 参数? - Javascript的主要内容,如果未能解决你的问题,请参考以下文章

你能让 html 文件在 url 中不显示“.html”吗? [复制]

html里的ul标签在dw里显示小图标 但在浏览器中不显示,为啥???

为啥 iframe 中的链接在 phonegap ios 应用程序中不起作用?

jquery获取当前页面的URL信息

网站搬迁后二级页面为啥打不开,报404错误?

BOM--location对象