小编Mus*_*afa的帖子

在Chrome和Firefox上捕捉Backspace是不同的

我正在尝试创建一个类似于应用程序的控制台,所以我正在捕捉窗口上的所有按键并与它们做相关的事情(不重要).问题在于退格.我有以下代码:

$(window).bind("keypress",function(e){
        var code = e.keyCode || e.which;
        if ( code == 8) {
            a = $("#console").html();
            $("#console").html(a.substring(0,a.length-1));
            currentCommand = currentCommand.substring(0,currentCommand.length-1);           
            e.preventDefault();
        }
Run Code Online (Sandbox Code Playgroud)

但是,在Firefox中,该内容已#console被删除,但Chrome不会执行上述代码.我需要一个跨浏览器兼容的解决方案.我错过了什么?

加成:

如果我使用keydown/keyup而不是keypress,我无法检测characeter是'A'还是'a'它总是返回'A'.

firefox jquery google-chrome keypress backspace

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

Access-Control-Allow-Origin不允许使用null

我目前正在使用SoundCloud API,并希望在单击按钮时嵌入轨道.

我收到两个错误:

XMLHttpRequest无法加载http://soundcloud.com/oembed.json?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F48419073.Access-Control-Allow-Origin不允许使用null.

未捕获的TypeError:无法读取null的属性'html'

这是我的代码:

<button onclick="getPopular()">+1</button>
<div id="track"></div>

<script src="http://connect.soundcloud.com/sdk.js" type="text/JavaScript"></script>
<script type="text/JavaScript">
    SC.initialize({
        client_id: "**************",
    });

    var getPopular = function() {
        SC.get("/tracks", {limit: 1}, function(tracks) {
            var track = tracks[0];
            alert("Latest track: " + track.title);
            SC.oEmbed(track.uri, document.getElementById("track"));
            });
        };
</script>
Run Code Online (Sandbox Code Playgroud)

我在代码中使用警报让我知道它实际上是从SoundCloud API获取信息.我只是不确定还有什么阻止它嵌入.

提前谢谢,或者看看我的问题.

  • jiggabits

javascript soundcloud

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

用Java多线程,如何停止?

我正在为我的作业编写代码,我对编写多线程应用程序并不熟悉.我学会了如何打开一个线程并启动它.我最好显示代码.

 for (int i = 0; i < a.length; i++) {
     download(host, port, a[i]);
     scan.next();                        
 }
Run Code Online (Sandbox Code Playgroud)

我上面的代码连接到服务器打开a.length多个并行请求.换句话说,下载打开a[i]连接以在每次迭代时获得相同的内容.但是,当下载已打开的线程完成时,我希望我的服务器在i = 0启动下一次迭代i = 1时完成下载方法.我使用scan.next()来手动停止它,但显然它不是一个很好的解决方案.我怎样才能做到这一点?

编辑:

public static long  download(String host, int port) {
    new java.io.File("Folder_" + N).mkdir();
    N--;
    int totalLength = length(host, port);
    long result = 0;
    ArrayList<HTTPThread> list = new ArrayList<HTTPThread>();
    for (int i = 0; i < totalLength; i = i + N + 1) {
        HTTPThread t;
        if (i + N > …
Run Code Online (Sandbox Code Playgroud)

java multithreading http

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

使用go build但我也看到-test标志

我有一个main.gomypkg/...go.我使用go build -o main main.go或者go install <pkg that has main.go>有一些我需要的标志.但我也看到了测试标志.为什么会这样?我错过了什么?

Usage of ./main:
  -docker string
        Docker API Path, defaults to local (default "unix:///var/run/docker.sock")
  -httptest.serve string
        if non-empty, httptest.NewServer serves on this address and blocks
  -port int
        The default port to listen (default 8000)
  -test.bench string
        regular expression per path component to select benchmarks to run
  -test.benchmem
        print memory allocations for benchmarks
  -test.benchtime duration
        approximate run time for each benchmark (default 1s)
  -test.blockprofile …
Run Code Online (Sandbox Code Playgroud)

testing flags build go

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

你怎么能告诉一个正常人第一个程序?

你怎么能告诉一个正常的人(即你的妈妈,大妈妈,你的小弟弟)第一个程序是如何写的?他们经常提出这个问题,我真的无法给出他们能理解的答案.

programming-languages

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

C中的函数指针数组

我想创建一个函数指针数组,并能够在for循环中调用它们.我怎样才能做到这一点?我试过了:

void (**a) (int);
a[0] = &my_func1;
a[1] = &my_func2;
a[2] = &my_func3;

for ( i = 0; i < 3; i++){
    a[0]();
    (*a[0])(); // Neither does work
}
Run Code Online (Sandbox Code Playgroud)

但我想我错过了一些语法:

error: too few arguments to function ‘*(a + (long unsigned int)((long unsigned int)i * 8ul))’
Run Code Online (Sandbox Code Playgroud)

c function-pointers function

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

Linux 更改为另一个 /dev/ttyX 并在那里运行程序

是否可以在 /dev/tty1 上运行脚本并生成一个在 /dev/tty2 上运行的程序并等待它完成并运行脚本中的其他命令?例如:

echo "Hello, this is from terminal 1"
chvt 2
sh myprogram.sh (I want it to run on tty2, but it runs on tty1)
chvt 1
Run Code Online (Sandbox Code Playgroud)

myprogram.sh:

echo "Hello' this is from terminal 2, please type your input:"
read A
exit A
Run Code Online (Sandbox Code Playgroud)

linux sh tty

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

NodeJS TCP Server,onData小块

我创建了一个简单的NodeJS TCP服务器,Java Client发送一个映像:

encodedImage = <a base64 encoded image>
out.write("IMG;" + encodedImage);
out.flush();
Run Code Online (Sandbox Code Playgroud)

我的NodeJS服务器如下:

net.createServer(function(TCPSocket){
        TCPSocket.on("data", function(data){
            console.log("TCP Recieved: " + data.length);    
        });
}).listen(5000);
Run Code Online (Sandbox Code Playgroud)

但是,即使我发送所有数据并立即刷新它,输出如下:

TCP Recieved: 13
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1472
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
Run Code Online (Sandbox Code Playgroud)

我想让它在一个简单的块中接收它,但我认为它是由于NodeJS的事件处理机制而发生的,对于作为单个块发送的数据实现单块数据的最佳方法是什么?据我所知,TCP窗口可能比1344字节的数据大得多.我想过将标头值用作HTTP,所以我知道ad的长度构造了我想要的对象.

java networking tcp node.js

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

从弹出页面到内容脚本页面的通信

我正在开发一个扩展,我不想使用选项页面.我使用浏览器操作(图标显示在右上角),并通过该页面创建一些首选项,然后将它们存储在localStorage中.

但是,我的内容脚本需要读取localStorage,但我知道它无法访问它.我看着传递的信息,但无法实现我想要的.

在这里我尝试过:

popup.js

$(document).ready(function(){
    chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
        if (request.method == "getList")
            sendResponse({status: localStorage['list']});
        else
            sendResponse({}); // snub them.
        });
});
Run Code Online (Sandbox Code Playgroud)

content.js

$(document).ready(function(){
    var p;
    chrome.extension.sendRequest({method: "getList"}, function(response) {
        p = response.status;
        alert(response.status);
    });
});
Run Code Online (Sandbox Code Playgroud)

message-passing google-chrome-extension

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

HTML5二进制文件写作与Base64

如您所知,HTML 5提供了一个很好的FileAPI.我已经构建了一个系统,用户收到Base64编码的字符串,需要写在磁盘上(具有适当的权限,因为它是谷歌Chrome应用程序).我的代码如下:(有点清除不必要的东西)

function onInitFs(fs){      
  fs.root.getFile(fileName, {create: true}, function(fileEntry) {
    fileEntry.createWriter(function(fileWriter) {
      var bb = new window.WebKitBlobBuilder(); 
      bb.append( atob(dataInBase64Format));
      fileWriter.write(bb.getBlob());           
    }, errorHandler);
    console.log( fileEntry.toURL());
  }, errorHandler);
}
Run Code Online (Sandbox Code Playgroud)

但是,我的原始文件大小为:6302446字节,服务器以8403264字节的形式将它们作为Base64发送,但保存的文件为9242715字节.当然我明白了什么是错的,我查看了文件,它只是一个很好的字符串.没有花哨的字符出现.我假设我在文本模式下写,atob只是将它转换为另一个字符串; 我需要转换为二进制格式(在一个数组中?)并强制我的fileWriter以二进制模式而不是文本模式写入.我在网上搜索过,但找不到解决方案.我在StackOverflow上发现了这个问题谷歌Chrome Base64方法是否能够处理来自File API的二进制数据?但它没有帮助我.

如何将我的Base64字符串转换为正确的数据结构并让我的fileWriter写入它?

javascript html5 google-chrome blob fileapi

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