小编ADA*_*MJR的帖子

HTML contenteditable:当内部 HTML 更改时保持插入位置

我有一个充当所见即所得编辑器的 div。它充当文本框,但在其中呈现 Markdown 语法,以显示实时更改。

问题:键入字母时,插入符号位置会重置为 div 的开头。

const editor = document.querySelector('div');
editor.innerHTML = parse('**dlob**  *cilati*');

editor.addEventListener('input', () => {
  editor.innerHTML = parse(editor.innerText);
});

function parse(text) {
  return text
    .replace(/\*\*(.*)\*\*/gm, '**<strong>$1</strong>**')     // bold
    .replace(/\*(.*)\*/gm, '*<em>$1</em>*');                  // italic
}
Run Code Online (Sandbox Code Playgroud)
div {
  height: 100vh;
  width: 100vw;
}
Run Code Online (Sandbox Code Playgroud)
<div contenteditable />
Run Code Online (Sandbox Code Playgroud)

代码笔: https: //codepen.io/ADAMJR/pen/MWvPebK

像 QuillJS 这样的 Markdown 编辑器似乎可以编辑子元素而不编辑父元素。这避免了问题,但我现在确定如何使用此设置重新创建该逻辑。

问题:如何让插入符号位置在打字时不重置?

更新:我已经设法在每个输入上将插入符号位置发送到 div 的末尾。然而,这本质上仍然重置了位置。https://codepen.io/ADAMJR/pen/KKvGNbY

html javascript forms text dom

7
推荐指数
2
解决办法
4885
查看次数

Node.js - 使用 P2P 的客户端到服务器 WebRTC

在寻找使用客户端到服务器模型(如 Discord)实现 WebRTC 之后,我得出的结论是,实现这一点的方法是拥有 2 个客户端——服务器和客户端。音频流可以叠加并以 1 个单流发送回用户。

后端/server.js

const clientPeer = new Peer({ initiator: true, wrtc });
    
clientPeer.on('connect', () => console.log('hi client, this is server'));
clientPeer.on('data', (data) => console.log('got a message from client peer: ', data));
Run Code Online (Sandbox Code Playgroud)

前端/index.js

serverPeer.on('connect', () => console.log('Connected to server'));
serverPeer.on('stream', async (stream) => {
  const video = document.createElement('audio');

  ('srcObject' in video)
    ? video.srcObject = stream
    : video.src = window.URL.createObjectURL(stream);

  await video.play();
});
Run Code Online (Sandbox Code Playgroud)

我将如何实现在客户端和服务器之间发送媒体流?

javascript networking node.js webrtc simple-peer

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

为什么初始化负大小的数组会导致溢出异常?

我在 C# 中进行单元测试,发现以下代码给出了溢出异常:

using System;
                    
public class Program
{
    public static void Main()
    {
        int i = 0;
        Console.WriteLine(new float[i - 1]);
        // System.OverflowException: Arithmetic operation resulted in an overflow.
    }
}
Run Code Online (Sandbox Code Playgroud)

https://dotnetfiddle.net/clbgZ3

但是,如果您显式尝试初始化负数组,则会收到以下错误:

Console.WriteLine(new float[-1]);
// Compilation error: Cannot create an array with a negative size
Run Code Online (Sandbox Code Playgroud)

为什么初始化负大小的数组会导致溢出异常,而不是其他类型的错误?

c# integer-overflow

5
推荐指数
2
解决办法
126
查看次数

如何将测试添加到现有的 Typescript 项目,并使其显示在测试资源管理器中?

我一直在玩一个尚未编写测试的 Typescript 项目。(提交添加测试

我尝试了 2 种不同的添加用 Typescript 编写的测试的方法。

  1. 启动文件
  2. 包.json

这两种方法目前都有效,并且能够通过正常的任务启动/调试进行调试。

但是,我尝试了 2 个不同的 VSCode 扩展,以添加对测试资源管理器的支持以运行这些测试、获得更好的 GUI 和自动反馈、可视化覆盖率等。

Mocha-SidebarMocha 测试资源管理器

他们都没有选择我使用默认配置编写的测试。他们都有关于如何设置用 Typescript 编写的测试的稀疏文档

在网上找到的所有博客文章,目前似乎与从命令行/任务启动进行的测试相关。

如何将 Mocha-Sidebar 或 Mocha-Test-Explorer 或其他一些测试资源管理器适配器配置为与该提交中的测试一起使用。

是否有可能不向 git 存储库提交进一步的配置文件,并让某人 fork 项目并能够运行测试。

例如 BDD 风格,在 test 文件夹中,命名为test/hello-world.test.tsTypescript,具有完整的调试支持。

mocha.js typescript test-explorer visual-studio-code mocha-sidebar

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

正则表达式检测 Zalgo

我正在创建一个消息过滤系统,它检测 z???a???l???g???o???。

我当前的正则表达式是,/([^\u0009-\u02b7\u2000-\u20bf\u2122\u0308]|(?![^aeiouy])\u0308)/gm 但这也捕获表情符号。

正则表达式应该过滤所有 w???e???i???r???d??? ???文本??????喜欢??????这个???或 t?e?x?t? ?喜欢??t?h?i?s?,但不应捕捉表情符号。

javascript regex string regular-language zalgo

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