小编m90*_*m90的帖子

<video>和onloadedmetadata-event

我想在JavaScript中使用HTML5视频元素的尺寸.该video-tag本身不具有任何尺寸的设定,所以我希望它扩展到视频的大小(它).我的标记看起来像这样:

<video id="viddy" autoplay>
<source src="myvideo.mp4" type='video/mp4; codecs="avc1.42E01E"' />
</video>
Run Code Online (Sandbox Code Playgroud)

当我只使用jQuery获取元素height()和/或width()我将获得默认值300,因为它不会等待视频加载.所以我在网上(这里这里)发现的是我应该等待onloadedmetadata-event.所以我想在我的JS中做以下事情:

var video = document.getElementById('viddy');
video.onloadedmetadata = function(e){
var dimensions = [video.videoWidth, video.videoHeight];
alert(dimensions);
} 
Run Code Online (Sandbox Code Playgroud)

然而,事件永远不会发生(虽然视频会加载和播放),我永远不会得到我的尺寸.jQuery- bind('load',以及我能想到的其他方式也是如此.任何的想法?谢谢.

javascript jquery html5-video

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

如何将 hashbang url 更改为历史 API

我正在使用 ember1.0-rc3,我想将 hashbang url 更改为正常的 url 格式(即,www.site.com/admin#/page1 到 www.site.com/admin/page1)。为了做到这一点更改,我在应用程序路由器中使用位置:“历史记录”。

但是当我重新加载页面或书签页面不起作用时,它仅重定向到主页。我希望我的应用程序中的选项重新加载和书签,而不更改 .htaccess 文件中的重定向 URL。有什么办法吗?谢谢提前

ember.js html5-history

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

无法获得TeamCity Build Step来执行grunt-cli

我正在尝试在TeamCity服务器上自动构建我的项目.我grunt用来定义和配置我的任务.这在当地工作正常.但是,我在使用TeamCity(在Windows Server 2008上运行)识别grunt 为可执行文件时遇到问题,grunt因为它不可用而被调用时构建将失败.

我确实已经grunt-cli安装在服务器上,并且可以在我通过ssh登录时执行它(当我以这种方式触发时,构建脚本也会成功).

我在npm install调用grunt之前运行,并尝试grunt-cli使用preinstallpackage.json喜欢的指令强制安装:

{
  "name": "someName",
  "version": "0.0.1",
  "private": true,
  "scripts" : {
    "preinstall" : "npm install grunt-cli -g"
  },
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-jshint": "~0.6.3",
    "grunt-contrib-less": "~0.8.1",
    "grunt-contrib-watch": "~0.5.3",
    "grunt-contrib-requirejs": "~0.4.1",
    "grunt-strip": "~0.2.1",
    "grunt-bump": "0.0.11"
  } 
}
Run Code Online (Sandbox Code Playgroud)

我可以看到npm安装grunt-cli,但grunt在下一步中不可用.

我还尝试将其包装到一个bat文件中,或者使用多个构建步骤来安装依赖项并运行grunt任务.

有人对此有任何意见吗?

teamcity continuous-integration npm gruntjs

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

如何取消引用作为空接口传递的指针值?

我有一种方法采用一种target interface{}我用于数据库访问的类型,例如:

func (c *client) Query(query someType, target interface{}) error {
    return c.db.Query(query).Decode(target)
}
Run Code Online (Sandbox Code Playgroud)

这然后被称为

result := resultType{}
if err := c.Query(myQuery, &result); err == nil {
    // do sth with result
}
Run Code Online (Sandbox Code Playgroud)

当我传递的指针地址 result

我现在遇到的问题是我不知道如何在测试中模拟这种行为(改变传递的引用)。

如果我不需要通过,interface{}我可以想象它是这样完成的:

type mockClient struct {
    targetValue resultType
}

func (m *mockClient) Query(query someType, target *resultType) error {
    *target = m.targetValue
    return nil
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用我的实际签名来做同样的事情,我无法target像这样取消引用包含的值:

type mockClient struct {
    targetValue interface{}
}

func (m *mockClient) Query(query someType, target interface{}) …
Run Code Online (Sandbox Code Playgroud)

pointers interface go

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

NodeJS - Pug - 在输入值中添加数据库中的变量

我正在尝试显示#{product.name}文本字段中的值。这是我的代码,但它不起作用

label Name
input(type='text', placeholder='Name', name='name' value='#{product.name}')
Run Code Online (Sandbox Code Playgroud)

这是我的结果:

截屏

有人能告诉我怎么做吗?

html javascript node.js pug

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

只返回$ .ajax传递的JSON数据的前20个结果?

我有以下简单的jquery片段

        $(document).ready(function () {
        $.ajax({
             url:"myjson.json",
             dataType: 'json',
             success:function(json){
                 $.each(json, function() {
                    alert("test");
                });
             },
             error:function(){
             },
        });
    });
Run Code Online (Sandbox Code Playgroud)

结果可以返回1000的结果 - 我只想要前20个例子.我最好怎么做?

jquery json for-loop

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

在 Promise 处理程序中使用断言的好策略是什么

我想使用 mocha 测试异步操作返回的值。这些值是通过普通的 A+ 承诺提供的。不幸的是,.then处理程序现在将吞下所有抛出的异常,assert因此无论如何测试都会通过:

someOp().then(function(result){
  // throws, but will be swallowed
  assert(result.indexOf('I_DONT_WANT_THAT') < 0);
  done();
});
Run Code Online (Sandbox Code Playgroud)

如何正确测试异步操作的结果?我能想到的只是无休止地传播错误,但在某些时候,我需要断言抛出一个真正的错误,使我的测试失败。

testing mocha.js node.js promise

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

我的Makefile为什么不在命令中插入表达式

我正在尝试编写一个超级简单的文件Makefile来在Go项目中运行测试。项目的依赖项已供应,但我想跳过这些测试。从命令行运行时,我只是做

$ go test $(go list ./... | grep -v /vendor/)
Run Code Online (Sandbox Code Playgroud)

但是,当我把它变成Makefile这样的时候:

test:
    go test $(go list ./... | grep -v /vendor/)

.PHONY: test
Run Code Online (Sandbox Code Playgroud)

该表达式将不被评估:

$ make
go test 
?       github.com/m90/some-repo    [no test files]
Run Code Online (Sandbox Code Playgroud)

我如何获得make以类似于shell的方式插值表达式?

makefile go

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

如何正确转义和取消转义包含换行文字的多行字符串?

我正在开发 Visual Studio Code 扩展。该扩展应该作用于编辑器窗口中当前选择的文本并将其发送到外部命令(lein-cljfmt在我的情况下,但我认为这与我的问题无关)。当外部命令处理完文本后,我想用命令行工具返回的结果替换当前编辑器选择器。

在发送字符串之前,我像这样转义它:

contents
    .replace(/\\/g, '\\\\')
    .replace(/"/g, '\\"')
    .replace(/\n/g, '\\n');
Run Code Online (Sandbox Code Playgroud)

未转义的结果如下:

contents
    .replace(/\\n/g, '\n')
    .replace(/\\"/g, '"')
    .replace(/\\\\/g, '\\');
Run Code Online (Sandbox Code Playgroud)

除了一种情况之外,这在所有情况下都有效:当正在处理的选择包含包含换行符文字的字符串文字时,取消转义会将其转换为换行符,从而破坏编辑器中的代码。

这是打破我的转义的片段示例:

(defn join
  [a b]
  (str a "\n" b)) 
Run Code Online (Sandbox Code Playgroud)

我尝试了一些正则表达式黑魔法,比如

.replace(/(?!\B"[^"]*)\\n(?![^"]*"\B)/g, '\n')
Run Code Online (Sandbox Code Playgroud)

到目前为止,但找不到没有边缘情况的解决方案。有没有一种方法可以做到我所缺少的?我还想知道是否有一个 VSCode 扩展 API 可以处理这个问题,因为这对我来说似乎是一个常见的场景。

javascript regex escaping visual-studio-code vscode-extensions

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

AssertionError:使用mocha测试async requirejs调用时缺少预期的异常

我正在为自定义requirejs加载器编写测试.在格式错误的输入上它应该抛出一个错误.

我正在使用mocha并简单node-assert地测试它:

it('throws a SyntaxError on malformed input', function(done){
    assert.throws(function(){ requirejs(['myLoader!malformedInput'], Function.prototype) }, SyntaxError);
    done();
});
Run Code Online (Sandbox Code Playgroud)

测试失败的原因是:

AssertionError:缺少预期的异常(SyntaxError)..

根据我的理解,读取断言的文档我的语法应该没问题.错误消息也有点难以理解.

我最好的猜测是,这是因为requirejs呼叫是异步的,但后来我不知道何时呼叫done这种情况?

或者我误解了requirejs处理我传递的错误的方式onload.error(e)

testing amd mocha.js requirejs node-assert

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