标签: jquery-terminal

如何在网页中运行使用Emscripten编译的交互式程序?

我有一个简单的程序,请说如下:

#include <stdio.h>

int main()
{
    char buf[100];
    while (fgets(buf, sizeof(buf), stdin) != NULL) {
        printf("You typed: %s", buf);
    }
}
Run Code Online (Sandbox Code Playgroud)

我用Emscripten编译了它:

emcc -o hello.html hello.cpp
Run Code Online (Sandbox Code Playgroud)

这给了我一个非常基本的Emscripten生成的网页,其中包含一个简单的程序输出窗口.但是,该fgets()调用会导致浏览器弹出窗口,大概来自prompt().我可以输入内容,结果最终会显示在输出窗口中.这不是一个理想的互动体验.

我想要的是更传统的"控制台"界面,用户可以在终端窗口中交互式输入以向交互式程序提供输入.

我怀疑解决方案可能存在于JQueryTerminal,HyperXterm.js之类的内容中,但我目前还不清楚如何将其中任何一个实际连接到Emscripten编译的程序.

如何为我的Emscripten代码提供"控制台"界面?

emscripten jquery-terminal xtermjs

10
推荐指数
1
解决办法
650
查看次数

实现“少”时,例如在移动设备上滚动时,仅触摸一次移动火

我正在尝试在 jQuery 终端的较少扩展中实现触摸滚动。它的工作方式类似于 less unix 命令。

我有这个代码:

self.touch_scroll(function(event) {
    // how much difference changed since last touch move
    var delta = event.current.clientY - event.previous.clientY;
    var ret;
    var interpreter = interpreters.top();
    if (is_function(interpreter.touchscroll)) {
        ret = interpreter.touchscroll(event, delta, self);
    } else if (is_function(settings.touchscroll)) {
        ret = settings.touchscroll(event, delta, self);
    }
    if (ret === true) {
        return;
    }
    return false;
});
// make_callback_plugin is helper that use $.Callbacks and make sure that there is only
// one handler on the element
$.fn.touch_scroll …
Run Code Online (Sandbox Code Playgroud)

javascript jquery android touch-event jquery-terminal

7
推荐指数
1
解决办法
625
查看次数

文本替换后匹配子串的光标位置

TL; DR

我有替换文本,字符串和光标位置(数字)的函数,我需要获取使用replace函数创建的新字符串的更正位置(数字),如果字符串更改的长度:

input and cursor position:  foo ba|r text
replacement: foo -> baz_text, bar -> quux_text
result: baz_text qu|ux_text text

input and cursor position:  foo bar| text
replacement: foo -> baz_text, bar -> quux_text
result: baz_text quux_text| text

input and cursor position:  foo bar| text
replacement: foo -> f, bar -> b
result: f b| text

input and cursor position:  foo b|ar text
replacement: foo -> f, bar -> b
result: f b| text
Run Code Online (Sandbox Code Playgroud)

问题是我可以在原始文本上使用子字符串,但是替换将不匹配整个单词,因此需要对整个文本进行,但是子字符串将不匹配替换.

我也很好用解决方案,当原始光标位于替换单词的中间时,光标始终位于单词的末尾.

现在我的实现,在jQuery终端我有一个格式化程序函数数组:

$.terminal.defaults.formatters
Run Code Online (Sandbox Code Playgroud)

他们接受一个字符串,它应该返回新的字符串它工作正常,除了这种情况: …

javascript string jquery-terminal

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

webpack jquery插件加载自己的jquery实例

我一直在尝试通过webpack加载一个jquery插件.此插件打包为npm模块,其依赖项仅包含jquery.我认为webpack加载了jquery的实例,而不是使用我提供的全局提供的ProvidePlugin.我尝试了另一个stackoverflow帖子中提供的所有解决方案(在webpack中管理jQuery插件依赖项),但他们没有成功; 结果总是一样的:"terminal()不是函数".如果我手动修改node_modules文件夹中的包,删除package.json中的jquery依赖项,并在node_modules插件文件夹中下载的依赖项webpack成功地将该插件与jquery的全局实例绑定.我知道,我可以简单地创建该包的一个分支并使用私有的npm存储库,但我想使用官方包.

这是我的webpack配置:

var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CleanWebpackPlugin = require('clean-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var moment = require('moment');
var path = require('path');
var environment = process.env.APP_ENVIRONMENT || 'dev';

module.exports = {

  entry: {
    'app': './src/main.ts',
    'polyfills': './src/polyfills.ts',
    'vendor': './src/vendor.ts'
  },
  /*devtool: 'source-map',*/
  output: {
    path: './dist',
    filename: '[name].browser.' + moment().format('DDMMYYYYHHmm') + '.js'
  },
  module: {
    loaders: [
      { test: /\.component.ts$/, loader: 'ts!angular2-template' },
      { test: /\.ts$/, exclude: /\.component.ts$/, loader: …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-plugins jquery-terminal webpack

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

为 JQuery 终端添加颜色

我正在尝试为 jquery 终端添加颜色,就像 linux 中的 bash 终端一样。

我尝试过相同的颜色代码排列

\033]01;31\] # pink
\033]00m\]   # white
\033]01;36\] # bold green
\033]02;36\] # green
\033]01;34\] # blue
\033]01;33\] # bold yellow
Run Code Online (Sandbox Code Playgroud)

并且没有颜色选项。

jquery-terminal

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