如何处理 Scala.js 中事件处理程序的供应商前缀



org.scalajs.dom.experimental包含全屏 API 的外观。目前的实现似乎是供应商前缀的,至少对于Chrome和Firefox来说是这样。如何使用此外观与供应商前缀的浏览器一起使用?

最简单的解决方案是使用其规范名称填充 API,重定向到以供应商为前缀的版本。例如,在 JavaScript 文件中:

if (!Document.prototype.hasOwnProperty("fullscreenEnabled")) {
  if (Document.prototype.hasOwnProperty("webkitFullscreenEnabled"))
    Object.defineProperty(Document.prototype, "fullscreenEnabled", {
      get: function() { return this.webkitFullscreenEnabled; }
    }
  }
}

或者,在 Scala 中.js:

import scala.scalajs.js
import js.DynamicImplicits._
import js.Dynamic.{global => g}
if (!g.Document.prototype.hasOwnProperty("fullscreenEnabled")) {
  if (g.Document.prototype.hasOwnProperty("webkitFullscreenEnabled"))
    js.Object.defineProperty(g.Document.prototype, "fullscreenEnabled", js.Dynamic.literal(
        get = { (thiz: js.Dynamic) => thiz.webkitFullscreenEnabled; }: js.ThisFunction
    )
  }
}

相关内容

  • 没有找到相关文章

最新更新