You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PureScript中获取当前浏览器URL

如何在PureScript中获取当前浏览器URL

嘿,这个问题我之前在做PureScript前端项目的时候也碰到过!其实要实现和JS里window.location.href一样的效果,我们可以借助PureScript的web-html包来访问浏览器的Location API,下面给你详细说说怎么做:

首先,确保你的项目里已经安装了purescript-web-html包。如果用Spago作为包管理器的话,直接在项目根目录运行这个命令就行:

spago install web-html

接下来就是核心的代码实现了。我们需要从浏览器的window对象中获取location实例,然后读取它的href属性——这和JS里的逻辑完全对应,只是用PureScript的类型安全方式来实现:

import Web.HTML (window)
import Web.HTML.Location (Location, href, location)
import Effect (Effect)

-- 定义一个获取当前完整URL的函数,返回带副作用的Effect String
getCurrentUrl :: Effect String
getCurrentUrl = do
  -- 获取浏览器的window对象
  win <- window
  -- 从window中取出location实例
  loc <- location win
  -- 读取location的href属性,也就是完整URL
  href loc

简单解释一下这段代码:

  • window函数返回的是Effect Window,因为访问浏览器的全局对象属于有副作用的操作,PureScript用Effect来封装这类操作。
  • location函数负责从Window对象中提取出Location实例。
  • href函数则是获取Location对象的href属性值,也就是我们需要的完整URL字符串。

如果你还需要获取URL的其他部分,比如协议、主机名、路径名这些,Web.HTML.Location模块里也提供了对应的函数,用法和href完全一致。比如要获取当前路径名的话,可以这么写:

import Web.HTML.Location (pathname)

getCurrentPath :: Effect String
getCurrentPath = do
  win <- window
  loc <- location win
  pathname loc

备注:内容来源于stack exchange,提问作者Chris Stryczynski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:55:29