2024 Clojure调研中分享您的想法!

欢迎!请参阅关于页面以了解该功能的工作原理的更多信息。

0
ClojureScript

我的函数需要接受一个文档元素并调用element.webkitRequestFullscreen()方法。
或element.mozRequestFullscreen(),这取决于浏览器。

(defn somfn[elem]
..

(exists? elem.requestFullscreen)

..

无法编译。我得到以下消息《code>js/elem is shadowed by a local

我该如何解决这个问题?

2 个答案

+1

被选中
 
最佳答案

当属性存在时返回true-like值时,您可以通过常规访问检查属性

(if elem.requestFullscreen ...)

或者更正确一点的版本

(if (.-requestFullScreen elem) ...)

不过这些在国外焉在可能存在但可能是nil或false的情况下不起作用。

+3

您可以使用 goog.object API

`
(ns my.app
(:require [goog.object :as gobj]))
(defn somefn
[elem]
(if (gobj/containsKey elem "requestFullscreen")

...))

`

https://google.github.io/closure-library/api/goog.object.html

是的,在javascript中,您可以使用in运算符:`if ("requestFullscreen" in elem)`,但在cljs中不支持。

goog.object/containsKey 是 `in` 运算符的包装。


goog.object.containsKey = function(obj, key) {
  return obj !== null && key in obj;
};
...