小编Bob*_*ith的帖子

如何在javascript中模拟HTML5拖放事件?

作为标题,我试图在javascript中模拟HTML5拖放事件.

我查看了jquery.ui.simulate以及这里的模拟函数.两者似乎都能够通过模拟与jQuery UI对象一起使用的mousedown,mousemove和mouseup来模拟拖放.

但是像拖放演示站点这样的页面中的拖放事件似乎不能使用相同的方法进行模拟.触发mousedown似乎没有触发dragstart HTML5事件.

有没有办法让模拟mousedown/mousemove/etc启动dragstart事件,还是有办法直接模拟dragstart(然后删除)事件?

我已经尝试修改SO上的模拟功能来添加HTML5 dragstart事件,所以我可以在演示页面上尝试类似下面的内容

 simulate( document.querySelector('#three'), 'dragstart')
Run Code Online (Sandbox Code Playgroud)

但是我收到错误,因为我不确定如何正确地在模拟的dragstart事件上创建dataTransfer对象.

基本上,我会接受任何答案,让我可以使用jquery.ui.simluate(或其他库)或使用修改版本的方法将元素'three' 拖动到演示拖放页面中的'bin'元素模拟我在SO上找到的功能.

javascript unit-testing

17
推荐指数
1
解决办法
8650
查看次数

如何在knockout.js中处理本地化?

你如何使用knockout.js处理本地化?

似乎knockback.js有一个很好看的实用程序来处理本地化,我想知道是否有任何第三方库可以与knockout.js一起使用来处理本地化而无需实际切换到knocback.js来获取这些功能(因为我真的不需要骨干模型或路由这个简单的应用程序).像Mapping插件一样简单易用的东西是理想的.

谢谢!!

javascript knockout.js single-page-application

13
推荐指数
2
解决办法
9069
查看次数

取消绑定jQuery ajaxSuccess事件

无法解除全局ajaxSuccess事件处理程序的绑定.

每次运行以下代码然后测试ajax函数时,每次运行代码时都会调用一次方法钩子.

var hook = function() { console.log('hey'); };
$(document).unbind('ajaxSuccess', hook); // not working
$(document).bind('ajaxSuccess', hook);
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用

$(document).ajaxSuccess(hook);
Run Code Online (Sandbox Code Playgroud)

但是上面的内容并没有取代现有的钩子引用,并且具有与上面相同的行为.

可能相关的一件事是我使用的是非常旧版本的jQuery(1.3.2).

我确信这里有一个显而易见的解决方案,但是大脑今天没有用.任何帮助将不胜感激!

提前致谢!

javascript jquery

6
推荐指数
1
解决办法
3314
查看次数

chrome.runtime.onConnect 在 Chrome 扩展中不存在

我在持久后台脚本(background.js)中有以下代码:

chrome.runtime.onConnect.addListener(function(port) {
    console.assert(port.name == "knockknock");
    port.onMessage.addListener(function(msg) {
        if (msg.joke == "Knock knock")
            port.postMessage({question: "Who's there?"});
        else if (msg.answer == "Madame")
            port.postMessage({question: "Madame who?"});
        else if (msg.answer == "Madame... Bovary")
            port.postMessage({question: "I don't get it."});
    });
});
Run Code Online (Sandbox Code Playgroud)

当我在 Chrome 中加载/重新加载扩展程序时,我收到错误消息

Uncaught TypeError: Cannot call method 'addListener' of undefined 
Run Code Online (Sandbox Code Playgroud)

该代码是从 Chrome 扩展的文档站点中获取的,因此它可能是有效的代码,只是我缺少一些设置。

清单看起来像:

{
    "manifest_version": 2,
    "name": "TestMessaging",
    "version": "1",
    "background" : {
        "scripts": ["background.js"],
        "persistent": false
    },
    "browser_action": {
        "default_icon" : "icon.png"
    },
    "content_scripts": [
        {
            "matches": ["http://*/*", "https://*/*"],
            "js": …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-extension

6
推荐指数
1
解决办法
1754
查看次数

将getUserMedia流式传输到Icecast服务器?

有没有办法将webrtc的getUserMedia(视频和音频)创建的本地blob流式传输到Icecast服务器,从而可以使用HTML5进行直播?

特别是在下面的例子中(来自Justin Uberti的2012年Google I/O视频),我可以捕获音频/视频并在视频元素中本地播放:

<script type="text/javascript">
var onGotStream = function(stream) {
  var url = webkitURL.createObjectURL(stream);
  video.src = url; //
}
navigator.webkitGetUserMedia({video: true, audio: true}, onGotStream, null);
<script>

<video = id='video' autoplay='autoplay'/>
Run Code Online (Sandbox Code Playgroud)

但是,我没有将视频src设置为本地blob,而是将流发送到Icecast服务器,然后使用指向Icecast服务器的视频元素播放该直播流.

这可能吗?我该怎么办呢?

谢谢!!

javascript video-streaming html5-video icecast webrtc

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

如何在here-strings中使用变量时保留换行符

运行以下代码时:

  $txt = Get-Content file1.txt

    $a = @"
     -- file start --
     $txt
     -- file end --
    "@

   $a
Run Code Online (Sandbox Code Playgroud)

所有新行都将从文件内容中删除,但只是正在运行

$txt
Run Code Online (Sandbox Code Playgroud)

打印出文件而不剥离新行.

知道如何使用here-string让它按需运行吗?

谢谢!

powershell

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

SPA和node.js服务器的身份验证

我有一个非常简单的node.js应用程序构建在express上,它使用会话内存存储处理身份验证.用户基本上通过以下方式登录:

app.post('/sessions', function(req, res) {
            // check username/password and if valid set authenticated to true
        if (authenticated){
            req.session.user = req.body.username;
                } ...
});
Run Code Online (Sandbox Code Playgroud)

然后在来自浏览器的每次调用中,调用一个requiresLogin中间件函数,该函数检查是否已设置会话上的该用户属性.

我现在正在将应用程序转换为基本上只提供可能会或可能不会在浏览器中使用的服务,因此我不打算使用cookie /会话,而是考虑更改系统,以便将其发布到/ getToken(而不是/ sessions)将返回与用户帐户关联的临时随机令牌,然后可以使用该临时随机令牌访问服务一段时间.然后,使用该服务将需要在每次调用中包括有效令牌.(我认为这比每次传递用户名/密码更好,以便在调用get令牌后,密码不必存储在客户端计算机的内存中?)

这样的系统基本上和上面的系统一样安全,还是有更多的标准/安全方法来处理这个问题?处理这样的事情的标准方法是什么?

在此先感谢您的帮助!

javascript authentication node.js express

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

使用node.js模块,在什么情况下模块会被执行两次?

我有一个模块包装我的应用程序使用的Socket.io功能,看起来像这样:

// realtime.js
var io = require('socket.io'),
    sio;

exports.init = function(expressServer) {
    sio = io.listen(expressServer);
}

...
Run Code Online (Sandbox Code Playgroud)

主要的app.js文件看起来像

// app.js
var rt = require('./realtime.js'),
    other = require('./other.js');
...
rt.init(expressServer);
Run Code Online (Sandbox Code Playgroud)

另一个模块也使用rt.js

// other.js
var rt = require('./realtime.js');
...
Run Code Online (Sandbox Code Playgroud)

我的问题是,other.js和app.js是否都有相同的rt.js实例?

有关redis的SO的答案让我相信上述陈述是正确的,但在文档中说它

多次调用require('foo')可能不会导致模块代码多次执行.这是一个重要的特征.有了它,就可以返回"部分完成"的对象,从而允许加载传递依赖,即使它们会导致循环.

这似乎意味着它不能保证是这样的?

最后这个问题似乎表明它取决于文件名,因为只有一个rt.js实例,所以不应该多次执行.如果是这种情况,它只依赖于rt.js是同一个文件,还是取决于require指定的路径.基本上,如果rt.js和other.js在lib /中,并且app.js比其他.js中的要求低一级,而app.js会指向来自不同文件的rt.js,这有关系吗?

如果有人能为我清除这种困惑,我将不胜感激!

javascript node.js

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