小编abo*_*ght的帖子

动态添加新的织物画布

我正在开发一个需要创建多个画布元素(单独的条形,每个条形代表一个不同的渐变)的项目。我想用fabric.js动态地做到这一点,例如:

 function add_gradient(color_stops){
     // Add a new rectangular canvas with fill representing specified gradient
     var grad_box = document.getElementById("divWithCanvases");

     var newCanvas = document.createElement("canvas");
     grad_box.appendChild(newCanvas);

     var gradCanvas = fabric.Canvas(newCanvas, {width: 500, height:50});
     var ctx = gradCanvas.getContext('2d');
     // Do stuff to canvas...
 }
Run Code Online (Sandbox Code Playgroud)

但是,调用fabric.Canvas失败并显示错误“this.initialize 未定义”。(fabric.js 第 1627 行,版本 1.4.13)

我怎样才能:

  1. 基于 HTML 元素(而不是字符串 id)生成一个新的织物画布,或者,
  2. 将自动生成的新画布元素附加到 DOM?(不带参数的fabric.Canvas() 形式会使...某事...但它不能与 一起使用appendChild

根据fabric.js 文档fabric.Canvas构造函数接受 HTMLElement 或字符串元素 id。我只能让它与字符串一起工作。

html javascript canvas fabricjs

4
推荐指数
1
解决办法
6520
查看次数

在某些浏览器中发出范围请求时出现问题

摘要:我想从 GitHub 页面发出 Range 标头请求。然而,在某些浏览器中,此操作会失败 - 可能是由于 Gzip 压缩问题。它适用于 Chrome (v74),但不适用于 FF (v66)、Mac OS。

目标:我想在所有浏览器中可靠地发出此请求,例如每当发出范围请求时强制将响应类型编码为文本。

我不清楚这种行为是由浏览器、服务器还是两者的某种组合决定的。了解起源有助于定义修复方案——使用 Github 页面会很好,但不是强制性的。

我也不清楚这是否代表一个错误,或者如果是,那么在哪里。(在浏览器、规范等中)

示例测试用例:可能因为这涉及服务器端 gzip 编码,所以示例测试用例不会在本地重现。您需要在 JS 控制台中输入这些命令才能https://abought.github.io/weetabix/重现。

fetch('https://abought.github.io/weetabix/example_data/McDonald_s.csv', {headers: {range: 'bytes=1-100'}} ).then(resp => resp.text());

在 Chrome 中,这会获取响应文本。在 Firefox 中,它给出“解码错误”。

如果我省略resp.text,Firefox 可以完成请求 - 解码错误在于读取正文,而不是任何其他代码。复制为curl显示FF添加了一个--compress标志而Chrome没有。

调查 如果字节范围是 0-100,则请求在 FF 中有效。如果范围是 1-100,则失败。文件的这一部分都是 ASCII 字符。

如果我检查响应标头 ( Array.from(r.headers.entries())),FF 有一个额外的“内容编码:gz 标志”,我认为这是导致问题的原因。(例如,如果没有秘密解码器指令,gzip 就没有意义)

我尝试添加'accept-encoding': 'identity'到获取请求,但它是禁止的标头,并且通过代码修改它没有效果。

javascript firefox google-chrome http fetch-api

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

鼠标指针在 Chrome 全屏 div 上没有隐藏

我想让一个 HTML 元素全屏显示(div),并让指针保持隐藏状态。

这看起来很简单(cursor:none当 div 变为全屏时在 div 上设置),但它无法跨浏览器正常工作。

下面的代码片段适用于 Firefox,但在 chrome 56/Mac OSX 中,鼠标指针会在一段时间后重新出现(通常在 1-60 秒内)。

是否有可靠的跨浏览器方法来在全屏时隐藏鼠标指针?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Fullscreen mouse pointer</title>

    <style>
        .is-fullscreen {
            cursor: none;
            width: 100%;
            height: 100%;;
            background-color: white;
        }
    </style>
</head>
<body>

<div id="gofull">
FULLSCREEN AREA
</div>

<button onclick="makeFS()">Make fullscreen</button>


<script>
    // Button to make a div fullscreen and add relevant style in that case
    function makeFS() {
        // Get FS element, add class, and go fullscreen
        var …
Run Code Online (Sandbox Code Playgroud)

html javascript css google-chrome fullscreen

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