小编Joh*_*isz的帖子

如何防止退格键导航回来?

在IE上,我可以使用(非常非标准但可以正常工作)jQuery来实现这一点

if ($.browser.msie)
    $(document).keydown(function(e) { if (e.keyCode == 8) window.event.keyCode = 0;});
Run Code Online (Sandbox Code Playgroud)

但有可能以一种适用于Firefox的方式,或以跨浏览器的方式获得奖金吗?

作为记录:

$(document).keydown(function(e) { if (e.keyCode == 8) e.stopPropagation(); });
Run Code Online (Sandbox Code Playgroud)

什么也没做.

$(document).keydown(function(e) { if (e.keyCode == 8) e.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)

解决了问题,但是在页面上呈现退格键不可用,这比原始行为更糟糕.

编辑:我这样做的原因是我不是创建一个简单的网页,而是一个大型的应用程序.因为你在错误的地方按下退格键而失去10分钟的工作是令人难以置信的烦恼.通过防止退格键导航回来,防止错误与烦人用户的比例应该高于1000/1.

编辑2:我不是想阻止历史导航,只是意外事故.

EDIT3:@brentonstrines评论(因为这个问题非常受欢迎而搬到这里):这是一个长期的'修复',但你可以抛弃你的支持Chromium bug来改变webkit中的这种行为

javascript firefox jquery internet-explorer cross-browser

268
推荐指数
10
解决办法
20万
查看次数

如何从C++插件中的"MediaStream"对象读取音频数据

在流血和流泪之后,我终于设法建立了一个Node C++插件,并将一个Web平台标准MediaStream对象推送到其C++方法之一.为了兼容不同的V8和Node.js版本,我使用Native Abstractions for Node.js(nan):

addon.cc

NAN_METHOD(SetStream)
{
    Nan::HandleScope scope;
    v8::Local<v8::Object> mediaStream = info[0]->ToObject();
}
Run Code Online (Sandbox Code Playgroud)

addon.js

setStream(new MediaStream());
Run Code Online (Sandbox Code Playgroud)

对于它的价值,它可以正常工作(即它不会立即删除渲染器进程),并且我可以验证MediaStream对象的存在,例如通过从C++方法返回其构造函数名称:

addon.cc

info.GetReturnValue().Set(mediaStream->GetConstructorName());
Run Code Online (Sandbox Code Playgroud)

当从JavaScript调用时setStream,这将返回字符串MediaStream,因此对象肯定存在.我也可以返回mediaStream对象本身,一切都会正常工作,所以它确实是我需要的对象.

那么,我如何MediaStream在C++中从这个对象中读取音频数据(即音频样本)?作为旁注,实际数据读取(和处理)将在单独的情况下完成std::thread.


赏金更新

我明白如果我自己编译Electron和/或Chromium,这将更容易/可能,但我宁愿不参与维护地狱.

我想知道如果没有这样做是否可能,并且就我的研究而言,我确信我需要做两件事:

  1. 我相信blink public的相关头文件应该足够了
  2. 铬/闪烁库文件(?),用于解析外部符号,类似于node.dylib文件

另外,正如我所说,我相信我可以自己编译chrome/blink然后我会有这个lib文件,但这对于Electron来说是一个维护地狱.考虑到这一点,我相信这个问题最终归结为C++链接问题.有什么其他方法可以做我正在寻找的东西吗?

编辑

在我的情况下,ScriptProcessorNode不是一个选项,因为它的性能使它在生产中几乎无法使用.这将需要在ui /主线程上处理音频样本,这绝对是疯狂的.

javascript c++ v8 blink electron

69
推荐指数
1
解决办法
1871
查看次数

如何检测对HTML5"下载"属性的支持?

HTML5中实现的新功能之一是download锚标记的属性.此属性的好处是它为用户提供了下载在客户端应用程序中创建的内容的方法,例如图像(例如,从画布转换).

目前,对此功能的支持非常差,因此我想知道如何在浏览器中检测对此功能的支持.

javascript html5

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

优化DOM元素的本机命中测试(Chrome)

我有一个高度优化的JavaScript应用程序,一个高度交互的图形编辑器.我现在开始使用大量数据(图中数千种形状)对其进行分析(使用Chrome开发工具),并且我遇到了以前不寻常的性能瓶颈,即Hit Test.

| Self Time       | Total Time      | Activity            |
|-----------------|-----------------|---------------------|
| 3579 ms (67.5%) | 3579 ms (67.5%) | Rendering           |
| 3455 ms (65.2%) | 3455 ms (65.2%) |   Hit Test          | <- this one
|   78 ms  (1.5%) |   78 ms  (1.5%) |   Update Layer Tree |
|   40 ms  (0.8%) |   40 ms  (0.8%) |   Recalculate Style |
| 1343 ms (25.3%) | 1343 ms (25.3%) | Scripting           |
|  378 …
Run Code Online (Sandbox Code Playgroud)

javascript optimization hittest google-chrome-devtools

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

TypeScript中的抽象构造函数类型

TypeScript中非抽象类(非抽象构造函数)的类型签名如下:

declare type ConstructorFunction = new (...args: any[]) => any;
Run Code Online (Sandbox Code Playgroud)

这也称为类型.但是,我需要一个抽象类的类型签名(抽象构造函数).我的理解是可以被定义为具有类型Function,但就是这样过于宽泛.难道没有更精确的替代方案吗?


编辑:

为了澄清我的意思,下面的小片段演示了抽象构造函数和非抽象构造函数之间的区别:

declare type ConstructorFunction = new (...args: any[]) => any;

abstract class Utilities {
    ...
}

var UtilityClass: ConstructorFunction = Utilities; // Error.
Run Code Online (Sandbox Code Playgroud)

类型'typeof Utilities'不能分配给'new(... args:any [])=> any'.

无法将抽象构造函数类型分配给非抽象构造函数类型.

constructor abstract-class typescript

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

如何禁用webpack dev server自动重载?

我知道大多数人都有相反的问题但我实际上想要禁用自动重新加载功能.

这是我运行我的服务器的方式:

webpack-dev-server --open --progress
Run Code Online (Sandbox Code Playgroud)

这是我的dev服务器配置:

devServer: {
    contentBase: 'app',
    port: 9005,
    hot: false,
    inline: false
}
Run Code Online (Sandbox Code Playgroud)

版本:

"webpack": "1.14.0",
"webpack-dev-middleware": "1.9.0",
"webpack-dev-server": "^1.16.2",
"webpack-hot-middleware": "2.13.2",
"webpack-md5-hash": "0.0.5"
Run Code Online (Sandbox Code Playgroud)

使用此设置,webpack dev服务器将打开初始页面,localhost:9005/webpack-dev-server/同时启用自动重新加载(iframe模式).当我设置inlinetrue然后它打开localhost:9005并且自动重新加载仍然打开(inlinemode => websockets).

有没有办法完全禁用自动重新加载?

webpack webpack-dev-server

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

使用Rails进行新recaptcha的工作示例?

有人在Rails应用程序中有一个谷歌新的recaptcha的工作示例吗?我试图遵循的每个指南要么不清楚,要么不完整,并且似乎使用不同的方法.

手卷代码更可取.




工作正在进行中:

配置/环境/ production.rb:

  #...
  recaptcha_public_key= "[PUBLIC KEY]"
  recaptcha_private_key= "[PRIVATE KEY]"
end
Run Code Online (Sandbox Code Playgroud)

配置/环境/ development.rb:

  #...
  recaptcha_public_key= "[PUBLIC KEY]"
  recaptcha_private_key= "[PRIVATE KEY]"
end
Run Code Online (Sandbox Code Playgroud)

配置/初始化/ recaptcha.rb

Recaptcha.configure do |config|
  config.public_key  = Rails.application.secrets.recaptcha_public_key
  config.private_key = Rails.application.secrets.recaptcha_secret_key
  config.api_version = 'v2'
end
Run Code Online (Sandbox Code Playgroud)

ruby validation ruby-on-rails recaptcha ruby-on-rails-4

20
推荐指数
1
解决办法
1万
查看次数

'必须返回一个有效的React元素(或null)'与ReactJS中的一个组件一起出错

我的代码是这样的

var data = [
    {id: 1, taskName: "Pete Hunt", standarDescription: "This is one comment", emplComment: "meaaow I am meeawo", empRating : "1"},
    {id: 2, taskName: "Pete Hunt", standarDescription: "This is one comment", emplComment: "meaaow I am meeawo", empRating : "1"},
    {id: 3, taskName: "Pete Hunt", standarDescription: "This is one comment", emplComment: "meaaow I am meeawo", empRating : "1"},
    {id: 4, taskName: "Pete Hunt", standarDescription: "This is one comment", emplComment: "meaaow I am meeawo", empRating : "1"},
    {id: 5, taskName: …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

AJAX请求可以使用链接预取吗?

正如大多数人所知,HTML5引入了一种称为链接预取的标准化浏览器机制,如果浏览器确定没有网络活动,则允许在后台预加载选择URL的内容.通过在头部添加以下内容来使用它:

<link rel="prefetch" href="http://www.example.com/">
Run Code Online (Sandbox Code Playgroud)

我很好奇这个机制是否也能可靠地用于XMLHttpRequest - 从某种意义上说,如果我指定一个链接预取,然后在同一页面上的某个时间启动一个AJAX请求,那么XHR是否是一个HTTP字节范围请求,或要求整个页面,有效地忽略部分预加载的页面?

用英语:AJAX请求也会受益于预加载或部分预加载的内容吗?

ajax html5 prefetch

16
推荐指数
1
解决办法
1104
查看次数

当状态改变时,用状态数据发送ajax请求

我有一个反应组件,我在其中使用日期选择器.基于所选日期的值,我发送一个ajax请求来获取数据.我没有使用像redux或flux这样的框架.

export default class MyComponent extends Component {
    constructor(props) {
        super(props);
    }

    componentDidMount() {
        // Initial fetch request based on the default date
    }

    onDateSelectionChanged(fromDate, toDate) {
        this.setState({
            fromDate,
            toDate
        });
    }

    render() {
        return (
            <div className="row">
                <DateRangePicker callBackParent = {this.onDateSelectionChanged}/>
                {/* other stuff */}
            </div>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

现在假设我将日期更改为另一个日期.再次获取数据的最佳方法是什么?我应该再次发出请求onDateSelectionChanged还是有生命周期方法?

javascript ajax reactjs

14
推荐指数
1
解决办法
972
查看次数