gpt4 book ai didi

clojurescript - 浏览器功能 - 检查 ClojureScript 中是否存在对象

转载 作者:行者123 更新时间:2023-12-01 09:54:09 24 4
gpt4 key购买 nike

测试 ClojureScript 中是否存在某些内容的方法是什么?例如,我正在尝试访问浏览器地理定位 API。在javascript中,我会做一个简单的检查:

// check for Geolocation support
if (navigator.geolocation) {
console.log('Geolocation is supported!');
}
else {
console.log('Geolocation is not supported for this Browser/OS version yet.');
}

但是将它翻译成 ClojureScript,我得到一个错误:

(if (js/navigator.geolocation)  ;; Uncaught TypeError: navigator.geolocation is not a function
(println "Geolocation is supported")
(println "Geolocation is not supported"))

在 ClojureScript 中检查浏览器功能的正确方法是什么?

最佳答案

有多种选择:

  1. 存在吗?: http://dev.clojure.org/jira/browse/CLJS-495

仅存在于 clojurescript 中,不存在于 clojure 中。如果你看一下宏in core.cljc你会看到它只是一个 if( typeof ... !== 'undefined' )。使用示例:

   (if (exists? js/navigator.geolocation)
(println "Geolocation is supported"))
(println "Geolocation is not supported"))
  1. (js-in "geolocation"js/window) 扩展为 "geolocation"in windows

  2. (undefined?js/window.geolocation) 扩展为 void 0 === window.geolocation

IMO,正确的是js-in

关于clojurescript - 浏览器功能 - 检查 ClojureScript 中是否存在对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32010525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com