小编cyq*_*mon的帖子

剪贴板 API 调用抛出 NotAllowedError 而不调用 onPermissionRequest()

我有一个带有按钮的简单页面,按下该按钮时,使用异步剪贴板 API 写入剪贴板。

<body>
  <button type="button" onclick="testClipboard();">
    Test Clipboard
  </button>
</body>
Run Code Online (Sandbox Code Playgroud)
function testClipboard() {
  navigator.clipboard.writeText("Clipboard API Test").then(
    v => alert("Success"),
    e => alert("Fail\n" + e));
}
Run Code Online (Sandbox Code Playgroud)

这适用于 Chrome 和 Firefox、桌面和移动设备。但是在 Android Webview 上,它会引发以下错误:

NotAllowError: Write permission denied.


我想我需要覆盖WebChromeClient.onPermissionRequest()以授予权限,但奇怪的onPermissionRequest()是似乎没有被调用,并且仍然抛出相同的错误。

public class WebChromeController extends WebChromeClient {
  @Override
  public void onPermissionRequest(PermissionRequest request) {
    Log.d("myTag", "Permission request");
    Log.d("myTag", request.getResources().toString());
    request.grant(request.getResources());
  }
}
protected void initWebView() {
  // ...
  myWebView.setWebChromeClient(new WebChromeController());
}
Run Code Online (Sandbox Code Playgroud)

我仍然收到相同的错误:

NotAllowError: Write permission denied.

Logcat 也没有记录任何内容。


我怀疑我的 Android …

javascript clipboard android android-webview

67
推荐指数
1
解决办法
6148
查看次数

在 .eslintrc 中为 @babel/eslint-parser 声明 babel 插件

我一直在尝试了一段时间,现在得到@babel/plugin-proposal-class-properties与插件的工作很好@babel/eslint-parser,并eslint没有成功。

这是我的.eslintrc.js

...
  "parser": "@babel/eslint-parser",
  "parserOptions": {
    "ecmaVersion": 11,
    "requireConfigFile": false,
  },
  "plugins": [
    "@babel",
  ],
...
Run Code Online (Sandbox Code Playgroud)

这些是相关的安装包:

+-- @babel/core@7.11.1
+-- @babel/eslint-parser@7.11.3
+-- @babel/eslint-plugin@7.11.3
+-- @babel/plugin-proposal-class-properties@7.10.4
+-- eslint@7.7.0
Run Code Online (Sandbox Code Playgroud)

在此配置下,ESLint 错误并显示以下消息:

Parsing error: \eg\example.js: Support for the experimental syntax 'classPrivateProperties' isn't currently enabled (xx:yy): (Fatal)
Run Code Online (Sandbox Code Playgroud)

但是,如果我加入@babel/plugin-proposal-class-propertiesplugins.eslintrc.js这样的:

  "plugins": [
    "@babel",
    "@babel/plugin-proposal-class-properties",
  ],
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error while running ESLint: Failed to load plugin '@babel/plugin-proposal-class-properties' declared in '.eslintrc.js': Cannot find module …
Run Code Online (Sandbox Code Playgroud)

javascript plugins eslint babeljs

9
推荐指数
1
解决办法
3584
查看次数

SVG - 可以使用CSS的线性渐变作为填充吗?

太长了;

是否可以使用 CSS 的linear-gradient()功能来填充 SVG 元素?任何解决方法的想法也受到欢迎。


基本上我正在尝试使用Mustache为简单图形制作一个模板系统。用户(另一位开发人员)应该能够使用 CSS 更改图表的样式。

然而我很快发现SVG的fill属性与CSS的功能并不满意linear-gradient()fill: linear-gradient(#000, #FFF);只会让 Chrome 和 Firefox 都抱怨Invalid property value. 这意味着如果用户想要任何渐变效果,则必须更改 SVG DOM 并添加一个<linearGradient>元素,然后在 中引用它fill

这在我当前的模板框架中确实是可以实现的,但如果可能的话,我宁愿不更改 DOM。

有任何想法吗?


不,不是使用 CSS的 SVG 渐变副本

这个问题询问获得渐变填充的任何方法。这个问题特别要求使用CSS的linear-gradient()功能并避免使用SVG的<linearGradient>元素。

css svg gradient linear-gradients

6
推荐指数
0
解决办法
7015
查看次数

HTML - 为什么我的预加载资源再次加载?

这是我的示例代码:

  <body>
    <link rel="preload" href="/fonts/Roboto-Regular.woff2" as="font" />
    <style>
      @font-face {
        font-family: "Roboto";
        src: url("/fonts/Roboto-Regular.woff2") format("woff2");
      }
      * {
        font-family: "Roboto", sans-serif;
      }
    </style>

    <section>
      <h2>Hello World</h2>
    </section>
  </body>
Run Code Online (Sandbox Code Playgroud)

我的期望:

Roboto-Regular.woff2下载一次。第二次访问应该花费 <5ms,因为它是从缓存中读取的。

我实际看到的:

Roboto-Regular.woff2被完全下载两次。第二次访问花费的时间与第一次一样多。

硬刷新瀑布

这里的蓝色条是Content Download

我尝试过的:

此处建议的解决方案是:再次加载预加载的图像。但我很快意识到我的问题与缓存无关。我已经配置了服务器端缓存控制,如文件的响应头中所示:

响应头

之前的瀑布截图是硬刷新后截取的(ctrl F5);这是在软刷新后拍摄的:

软刷新瀑布

这次两个请求都只是从缓存中得到了响应,这说明缓存与整个情况无关。

那么这里出了什么问题呢?

我的环境:

Windows 10 专业版 N 1909

谷歌浏览器 78.0.3904.108 x64

html fonts cross-domain preload

5
推荐指数
1
解决办法
1140
查看次数

JavaFX CSS 中的 -fx-padding 和 -fx-label-padding 有什么区别?

在 JavaFX CSS 中,aLabel似乎有 2 个 CSS 填充属性。

Label具有 的所有性质Labeled,在此之下我们有-fx-label-padding

但是,Labeled也具有 的所有性质Control,它具有 的所有性质Region。在此之下,我们发现-fx-padding.

对我来说,这两个属性似乎做完全相同的事情。有人能解释一下它们之间的区别吗,为什么我们可能需要 2 个,以及何时更喜欢一个?

css javafx

3
推荐指数
1
解决办法
2759
查看次数

什么情况下SVG路径的命令可以省略?

我正在使用来自维基百科的地图文件的 SVG 代码,并偶然发现了这个看起来很奇怪的path元素。

<path d="m 36.943395,239.60555 c -2.53599,-0.0564 1.53374,-0.10078 -2.36262,-0.80482 0.32392,1.46137 0.35668,3.39659 -0.2642,6.15571 -0.16424,0.73016 -0.53689,1.39667 -1.02526,1.94642 8.3e-4,0.003 -0.73141,3.09631 3.2815,0.64493 0.79653,-0.4865 0.81727,-3.85406 0.0695,-4.31941 -1.13081,-0.70362 0.19452,-0.0269 0.27789,-1.56755 0.0174,-0.32184 1.91842,-2.01319 0.0232,-2.05529 l 0,1e-5 z"/>
Run Code Online (Sandbox Code Playgroud)

它似乎省略了大部分命令,只留下坐标,但不知何故在 Chrome 和 Firefox 中仍然可以正确呈现。所以我怀疑这里有一些标准(或者至少是事实上的标准)。然而,经过一番搜索后,我找不到任何关于可选命令和/或命令省略的参考。

那么有人可以解释一下这path是如何解释的吗?命令省略是否有任何标准?谢谢。

graphics svg

2
推荐指数
1
解决办法
217
查看次数