解决方案 »
- 网页弹出“缺少对象”错误
- 如何动态控制网页上控件的位置
- 关于javascript读取服务器文件的问题???????
- 如何禁止使用网页右箭功能,以及 菜单上的,查看-->源文件 ?
- 关于下拉框大小的问题
- 怎么在客户端用JAVASCRIPT获得上传图片的尺寸?
- 我新安装了win2000,可是声音和影像播放起来特别快,已经失真,如何解决!
- 帮忙!求一段代码,在线等!
- ?????????????????
- 大白求救!!在页面上添加2个按钮和一个文本框,点击第一个按钮可以前进一个页面, 点击第二个按钮就跳转到前面2个页面,点击文本框在文本框中显示历史页面的个数
- 两个JS文件在调用时冲突,求高手解答
- videojs插件中间播放按钮怎么显示?
js定时器时伪异步执行,不会阻塞,而且里面是另一个作用域(即另外的函数),你在里面返回和外部函数又没关系
另外listener 本身就是回调的概念
其他代码无法放倒回调函数里面,其他代码是chrome提供的api控制的,现在的状况是使用chrome提供的api,只要函数返回,那么剩下的代码就会直接执行,我没有权利去控制其他代码什么时候执行,只能控制不让回调函数返回。
其他代码无法放倒回调函数里面,其他代码是chrome提供的api控制的,现在的状况是使用chrome提供的api,只要函数返回,那么剩下的代码就会直接执行,我没有权利去控制其他代码什么时候执行,只能控制不让回调函数返回。chrome提供的api大部分都提供回调,自己认真看api,想好代码的执行循序。。
其他代码无法放倒回调函数里面,其他代码是chrome提供的api控制的,现在的状况是使用chrome提供的api,只要函数返回,那么剩下的代码就会直接执行,我没有权利去控制其他代码什么时候执行,只能控制不让回调函数返回。chrome提供的api大部分都提供回调,自己认真看api,想好代码的执行循序。。代码如下:
我现在是要开发一个chrome插件,在chrome发送http请求之前,修改http 头部,只有点击了forward按钮之后才让chrome发送出去修改后的头部。现在使用的chrome提供的API如下,只有用这个API才能在发送http之前修改头部信息:
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
//修改http 头部信息
if(forward){
return;
}else {
blocking;
}
}, filter, ["blocking", "requestHeaders"]);我现在的难点是没办法blocking住。只要function(details)返回了,那么chrome会自动把http发送出去的。
当请求即将发出时产生。这一事件在 TCP 连接建立前发送,可以用来取消或重定向请求。这里至少可以弹出一个对话框 来决定是不是 cancel
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
//修改http 头部信息
if(forward){
return;
}else{
fuction(){ doSomething().}
}
}, filter, ["blocking", "requestHeaders"]);
在doSomething()里面处理不行吗?
是弹出对话框啊,但是我不会那种alert的对话框啊,我试了模态对话框时不行的,虽然弹出来了,鼠标也不能点,但是后天还是不断地运行,也就是request还是发送出去了
do_something()如何阻塞住呢?这个不是说我事先知道应该修改什么在do_something中完成返回就可以了,只要用户不forward就一直阻塞住,就想弹出alert或者confirm对话框那样
你说的onBeforeRequest是在我的那个事件之前发生的,如果你在这一步取消了请求,那么就到不了我的那个事件了。
var execFn = function(){
console.log("come on!执行我!");
}
var queue = [];
queue.exec = function(){
if(this.length){
this[0]();
}
}
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
queue.push(execFn);
//修改http 头部信息
if(forward){
queue.exec();
return;
}else {
queue.push(execFn);
// blocking;
}
}, filter, ["blocking", "requestHeaders"]);$btn.addListener("click",function(){
queue.exec();
});
var execFn = function(){
console.log("come on!执行我!");
}
var queue = [];
queue.exec = function(){
if(this.length){
this[0]();
}
}
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
queue.push(execFn);
//修改http 头部信息
if(forward){
queue.exec();
return;
}else {
// blocking;
}
}, filter, ["blocking", "requestHeaders"]);
$btn.addListener("click",function(){
queue.exec();
});