小编bri*_*out的帖子

JavaScript中最快的MD5实现

那里有许多MD5 JavaScript实现.有谁知道哪一个是最先进的,最错误的,最快的?

我需要它用于这个工具.

javascript performance md5

215
推荐指数
11
解决办法
33万
查看次数

JavaScript的; 具有相同来源的标签/窗口之间的通信

我有两个窗口:窗口A和窗口B.

  • 窗口A和窗口B具有相同的域
  • 窗口A和窗口B没有任何父窗口.

问题:

  1. 窗口A是否可以获得窗口B的引用?
  2. 什么是最优雅的方式使窗口A通知窗口B?
    (包括新的HTML5规范)

我知道这样做的两种方式:

  • 服务器消息传递:窗口B常规询问服务器窗口A是否已通知某事
  • 通过本地数据进行消息传递(HTML5):当窗口A想要通知它改变本地数据的东西时,窗口B定期检查本地数据是否有任何变化.

但这两种方式并不那么优雅.
例如,获得窗口B的引用并使用window.postMessage()(HTML5)会很不错

最终的目标是制作像facebook这样的东西,如果你打开4个Facebook标签并在一个标签中聊天,聊天是最新的每个Facebook标签,这是整洁的!

javascript html5 web-applications postmessage local-storage

69
推荐指数
3
解决办法
6万
查看次数

类型“typeof globalThis”没有索引签名

每当我尝试在 TypeScript 环境中向全局 Nodejs 全局 namspace 添加函数时,都会收到此错误。

元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名

声明全局命名空间

declare global {
  namespace NodeJS {
    interface Global {
      signin(): string[]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所以如果我尝试这个

global.signin = () => {}
Run Code Online (Sandbox Code Playgroud)

它返回一个

元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名

node.js typescript microservices

62
推荐指数
6
解决办法
5万
查看次数

将所有域添加到CORS的安全隐患(Access-Control-Allow-Origin:*)

据说,不应该将所有域添加到CORS,而应该只添加一组域.然而,添加一组域有时并非易事.例如,如果我想公开公开API,那么对于想要调用该API的每个域,我需要联系以将该域添加到允许的域列表中.

我想在安全影响和减少工作之间做出有意识的权衡决定.

我看到的唯一安全问题是DoS攻击CSRF攻击.使用IMG元素和FORM元素已经可以实现CSRF攻击.可以通过阻止对引用者头部的请求来克服与CORS相关的DoS攻击.

我错过了安全隐患吗?


===编辑===

  • 假设Access-Control-Allow-Credentials未设置标头
  • 我知道如何添加一个给定的域"CORS访问"列表,因此我只对添加所有域"CORS访问"的安全隐患感兴趣

javascript security html5 denial-of-service cors

36
推荐指数
4
解决办法
2万
查看次数

shareThis vs addThis

ShareThisAddThis是可以添加到现有网站的插入式书签和社交链接共享脚本.

我不知道应该使用哪一个.

每个人的缺点和优点是什么?

两者似乎都不支持iframe按钮,对不对?

我愿意接受替代方案.

谢谢!

social sharethis addthis

34
推荐指数
2
解决办法
2万
查看次数

用于IE11的ES6代理Polyfill

IE11不会也不会实现ES2015代理对象.然而,IE11的延长支持终止于2025年10月14日.

有没有办法为IE11填充代理对象?所有其他浏览器都支持Proxy.

如果是,那么我们今天都可以在生产中使用它.如果没有,那么我们将不得不等待近十年......

编辑:我专门针对IE11,因为我知道IE通常具有我通常不知道的IE特定功能.

Edit2:我特别感兴趣的是能够实现一个全能拦截器.与__getattr__Python 类似.它只需要在IE11中工作.

javascript internet-explorer ecmascript-6 internet-explorer-11 es6-proxy

30
推荐指数
2
解决办法
2万
查看次数

JavaScript:如何知道与共享工作者的连接是否仍然存在?

我正在尝试使用共享工作者来维护Web应用程序的所有窗口/选项卡的列表.因此,使用以下代码:

//lives in shared-worker.js
var connections=[];//this represents the list of all windows/tabs
onconnect=function(e){
  connections.push(e.ports[0]);
};
Run Code Online (Sandbox Code Playgroud)

每次创建窗口时,都会与shared-worker.jsworker 建立连接,并且worker将与窗口的连接添加到connections列表中.

当用户关闭窗口时,它与共享工作程序的连接将过期,应从connections变量中删除.但我找不到任何可靠的方法来做到这一点.

查看规范,connections变量的对象似乎没有包含属性/函数来检查连接是否仍然存在.

可能吗?
同样,总体目标是拥有所有窗口/选项卡的列表.

编辑:一种方法是使共享工作者消息窗口并期待回复.如果共享工作者没有收到回复,那么它将认为该窗口已关闭.在我的实验中,这种方法并不可靠; 问题是没有办法判断一个窗口是关闭还是只是花了很长时间才能回复.

javascript html5 webkit web-applications web-worker

24
推荐指数
3
解决办法
4439
查看次数

使用HTML5画布生成动画GIF

他们是这样的图书馆吗?

任何浏览器都不支持AFAIK dataToURL('image/gif')

javascript html5 canvas html5-canvas

23
推荐指数
2
解决办法
4万
查看次数

检测音频是否在浏览器 Javascript 中播放

是否有一种全局方法可以检测音频何时在浏览器中播放或开始播放。

类似的想法 if(window.mediaPlaying()){...

没有将代码绑定到特定元素?

编辑:这里重要的是无论音频来自何处,都能够检测到任何音频。无论是来自 iframe、视频、Web Audio API 等。

javascript media-player audio-player

17
推荐指数
2
解决办法
9263
查看次数

TypeScript 和运行时类型检查,2020 年的简单解决方案

众所周知,TypeScript 仅在编译时进行类型检查。

有几种现有的方法可以添加运行时检查,例如io-ts,但我想知道是否有更简单的方法。

例如,一个 Babel 插件可以转译这个:

type Todo = {
  userId: number;
  id: number;
  title: string;
  completed: boolean;
}

const resp = await fetch("https://jsonplaceholder.typicode.com/todos/1");

const data = await resp.json();

assert(data typeof Todo);
Run Code Online (Sandbox Code Playgroud)

对此:

const __TodoType = {
  userId: Number;
  id: Number;
  title: String;
  completed: Boolean;
};
const __isTodoType = obj => (
  obj &&
  obj.constructor === Object &&
  Object.keys(obj).length === Object.keys(__TodoType).length &&
  Object.entries(obj)
    .every(([prop, val]) =>
      __TodoType[prop] && val &&
      __TodoType[prop] === val.constructor)
);

const resp = await …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript babeljs typescript2.0

17
推荐指数
2
解决办法
2176
查看次数