我需要以编程方式从Javascript获取帧的HTTP头.它不需要是可移植的(我只需要Chrome),我不介意添加/写入特定的扩展名.
或者,更好,更重要的是,我需要以编程方式访问特定站点的所有网络流量.
有没有办法做到这一点?我是否需要编写自己的扩展来实现它?如果是这样,我可以在Javascript中编写扩展吗?
写一个扩展似乎是唯一的出路.我可以写一个并使用chrome.*API,如下所示:https://developer.chrome.com/extensions/devtools_network如果要编写扩展名是要走的路,你会怎么做呢?
来自Chrome中的javascript控制台:
> function Person(name){this.name=name;}
undefined
Run Code Online (Sandbox Code Playgroud)
此时,根据Javascript规范,Person.prototype应该是一个空对象.我们分配它:
> p=Person.prototype
> Person
Run Code Online (Sandbox Code Playgroud)
请注意,> Person是可点击的,它会扩展为:
constructor: function Person(name){this.name=name;}
__proto__: Object
Run Code Online (Sandbox Code Playgroud)
但是......它不是一个空的对象吗?什么是额外的东西?如果你发出警报:
alert(p)
Run Code Online (Sandbox Code Playgroud)
你得到[object Object].为什么,当您在Chrome控制台中键入它时,它会出现>人物扩展?这不是一个空的对象吗?
谢谢!
我有两个功能:
function one(next){
Users.find({}, function(err, docs){
if( err)
next( err );
} else {
next( null );
}
});
}
function two(next){
Something.find({}, function(err, docs){
if( err)
next( err );
} else {
next( null );
}
});
}
Run Code Online (Sandbox Code Playgroud)
我可以使用异步库:
async.series( [one, two], function( err ){
...
});
Run Code Online (Sandbox Code Playgroud)
这里,如果one()返回err,则立即调用回调(使用err set).什么是async.series 的简单 BASIC实现?我查看了库的代码async
(这很棒),但它是一个库,意味着要做很多事情,而且我遇到它真的很麻烦.
你能告诉我一个简单的async.series实现吗?东西,它可以简单的叫对方后功能之一,而且-如果他们中的一个调用一个错误回调-被调用最终回调函数err
集?
谢谢...
芝加哥商业交易所.
我是一个非常基本的git用户; 我基本上只使用命令git add -a
(在修改后添加文件)然后git commit -m "what I did"
然后git push
(将其推送到我的服务器).
现在我想对我的代码库做一些非常激烈的事情.可能不起作用的东西 - 我将不得不回到原来的位置.
我怎么做?我创建一个"分支"吗?还是一个标签?或者是其他东西?
我正在使用一组简单的命令进行简单的解释.也回到原来的HEAD,或者然后(也许)将更改合并到HEAD(这将不会改变)
芝加哥商业交易所.
拿这段代码来说,其中f
有一个具有事件“主体”的流,它使用m
-- 本身就是一个发出事件的流来调用侦听器:
f.on('message', function(m) {
m.on('body', function(stream, info) {
var b = '';
stream.on('data', function(d) {
b += d;
});
stream.on('end', function() {
if (/^header/i.test(info.which))
msg.header = Imap.parseHeader(b);
else
msg.body = b;
});
});
m.on('attributes', function(attrs) {
msg.attrs = attrs;
msg.contentType = partID[1];
});
});
f.on('end', function() {
if (hadErr)
return;
cb(undefined, msg);
});
Run Code Online (Sandbox Code Playgroud)
后端正在发出一个“消息”事件,并向其传递一个m
对象。然后代码监听事件body
和attributes
。这一切都很简单,只是我的小脑袋有点危机(我不习惯处理流)。特别是:后端如何从f
和m
对象发出,以保证事件确实在正确的时间被调用?
具体来说:
f
编码才能确保m
m 在被调用之前不会发出m.on('body', function(stream, info) { …
我正在使用Dojo tabContainer.快速问题:如果要处理Dojo容器,是否必须在CSS中以像素为单位指定窗口小部件大小?从我所看到的,获得TabContainer实际显示的唯一方法是通过CSS给它一个绝对大小.
更新:我发现元素body
并且html
缺少height
属性,因此它被计算为0.所以,现在如果我将它们设置为100%,我将显示表单...但是,它将是巨大的!(只要页面).我们的想法是将它的高度设置为auto
,以便"只要它需要"......即使可能吗?
在我的HTML中,我有类似的东西:
...
<body>
<div id="loginForm"> </div>
</body>
...
Run Code Online (Sandbox Code Playgroud)
然后我在代码中:
require(["app/widgets/LoginForm"], function( loginForm){
// Create the "application" object, and places them in the right spot.
loginForm = new LoginForm( {} , 'loginForm');
loginForm.startup();
});
Run Code Online (Sandbox Code Playgroud)
LoginForm是一个简单的基于模板的小部件,包含以下模板:
<div data-dojo-attach-point="tabContainer" data-dojo-type="app.TabFading" data-dojo-props="tabPosition:'top'" style="height:100%">
<div data-dojo-type="dijit.layout.ContentPane" data-dojo-attach-point="loginPane" data-dojo-props="title: 'Login'">
<form data-dojo-type="dijit.form.Form" data-dojo-attach-point="loginForm" method="POST">
<label for="${id}_login">Login</label>
<input name="login" id="${id}_login" data-dojo-attach-point="login" data-dojo-type="dijit.form.ValidationTextBox" data-dojo-props="required:true"/>
<label for="${id}_password">Password</label>
<input name="password" id="${id}_password0" data-dojo-attach-point="password" data-dojo-type="app.ValidationPassword" />
<input type="submit" …
Run Code Online (Sandbox Code Playgroud) Dojo 有两个小部件:
注意:我正在以编程方式使用 Dojo。
我希望用户输入日期和时间,然后向服务器发送批次的“混合”值(即日期+时间)。
我意识到我需要操纵 之前的两个值submt()
。有没有既定的方法来做到这一点?我肯定不是地球上唯一需要简单日期/时间表格的人吗?
我必须执行以下操作:给定从服务器加载的页面,我必须在加载后自动在该页面中提交表单,并使用相同的字符串(test worked
)填充其所有输入字段.这显然是我的问题的简化,但它足够接近!
目前我正在获取表单,并使用https://github.com/cheeriojs/cheerio来探索它:
var URL = http://www.example.com/form/index.html"
// ...load the page ...
$ = cheerio.load( fetchedPageText );
Run Code Online (Sandbox Code Playgroud)
目前,我有以下代码:
var $ = cheerio.load( fetchedPageText );
var forms = $('form');
for( var i1 = 0, l1 = forms.length; i1 < l1; i1 ++ ){
var form = forms[ i1 ];
inputFields = $( 'input', form );
console.log("******FORM ACTION: ", form.attribs.action );
console.log("******FORM: ", form );
for( var i2 = 0, l2 = inputFields.length; i2 < l2; i2 ++ …
Run Code Online (Sandbox Code Playgroud) 我有两个字符串2017-03-15
( date
) 和 12:26
( time
)。我想从中创建一个本地化日期对象,而不使用库。
请记住,现在是:Tue Mar 14 2017 12:26:33 GMT+0800 (AWST)
,如果我这样做:
new Date( date + 'T' + time )
Run Code Online (Sandbox Code Playgroud)
我得到错误的结果,因为日期被视为 UTC:
Wed Mar 15 2017 20:26:00 GMT+0800 (AWST)
Run Code Online (Sandbox Code Playgroud)
如果我使用空格:
new Date( date + ' ' + time )
Run Code Online (Sandbox Code Playgroud)
结果是正确的:
Wed Mar 15 2017 12:26:00 GMT+0800 (AWST)
Run Code Online (Sandbox Code Playgroud)
然而,这在 Safari 上不起作用(没有 T 就不行)。Safari 实际上会抛出错误(!)。
我意识到将字符串解析为日期取决于实现。因此,“正确”地做到这一点的唯一方法是:
var timeSplit = time.split(':');
var dateSplit = date.split('-');
new Date( dateSplit[0], dateSplit[1] - 1, dateSplit[2], timeSplit[ 0 ], timeSplit[ …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的程序使用sscanf
.我遇到的问题是匹配后%[^-]s
,sscanf
似乎只是停止匹配.
这是一个简单的代码,看看我的意思.之后的%s
比赛%[^-]s %s
完全被忽略了.
注意:我需要它,%[^-]s
因为我需要我的程序来匹配两个可能的字符串.
注2:我知道代码完全不安全等等.这只是一个例子!
#include <stdio.h>
int main(void) {
int matches;
int num1, num2, num3, num4;
char *s1[10];
char *s2[10];
char *s3[40];
char *s4[50];
char *s5[50];
char *s6[50];
char *s7[50];
char fileTest[] = "29 0 8:4 / / rw,relatime shared:1 - ext4 /dev/sda4 rw,errors=remount-ro";
// char fileTest[] = "160 48 179:56 /inte /var/oil/gaol/org.something.org/media/internal ro,nosuid,relatime - ext4 /dev/mmccc rw,data=ordered";
matches = sscanf(fileTest, "%d %d %d:%d %s %s %[^-]s …
Run Code Online (Sandbox Code Playgroud)