如何在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
相关产品推荐
相关产品推荐

