Chrome API未在嵌套回调中注入cookie
Chrome API not injecting cookies in nested callback
我正在构建一个应用程序,该应用程序需要通过扩展将cookie注入googlechrome。我遇到的问题似乎是我对javascript回调理解的失误。我有以下。。
编辑:更简单的例子仍然不起作用。
$scope.selectAccount = function(account)
{
$scope.account = account;
setProxy(account.proxy.ip,account.proxy.port);
armProxyAuth(account.proxy);
chrome.windows.create({"url": "http://facebook.com", "incognito": true},function(window){
chrome.cookies.getAllCookieStores(function(stores){
bg.console.log('echo stores?');
bg.console.log(stores);
for(var i =0;i<stores.length;i++){
bg.console.log(stores[i].tabIds);
bg.console.log(window.tabs[0].id);
if(stores[i].tabIds[0]==window.tabs[0].id)
{
chrome.cookies.set({
"name": "xs", //secure, http only
"url":"https://www.facebook.com",
"httpOnly": true,
"domain":"www.facebook.com",
"secure": true,
"value": account.cookies.xs
},function (cookie) {
bg.console.log('cookie set');
bg.console.log(JSON.stringify(cookie));
});
chrome.cookies.set({
"name": "c_user", //secure
"url":"https://www.facebook.com",
"secure": true,
"httpOnly": false,
"value": account.cookies.c_user
},function (cookie) {
bg.console.log('cookie 2 set');
bg.console.log(JSON.stringify(cookie));
});
}
}
});
});
};
这做了我所期望的一切,除了实际的addCookies部分,cookies从未被添加,也没有抛出错误。我还发现,有时chrome.cookies.getAllCookiesStores回调也从未被触发,它在执行的内容上非常不一致,我似乎找不到任何韵律或原因。
当我进行以下时
$scope.selectAccount = function(account)
{
$scope.account = account;
addCookies(account.cookies);
}
Cookie已加载,没有问题。我不确定我的javascript、chrome API或其他什么东西是否出现了故障。如果有人能对它有所启发,那就太好了。
当使用真正的"回调"从另一个函数调用函数时,例如在setTimeout
或$.ajax()
中,调用该函数时不带参数,其作用域是环境的最大作用域,通常是window
对象(少数例外)。
您不能将account.cookies
传递到addCookies
中,因为第6行上的function(window){
是一个回调函数,并且在其作用域中丢失了account
变量。
此外,当您将function(stores){
作为chrome.cookies.getAllCookieStores(
的回调时,您将再次将内部函数的作用域重置为没有account
变量的作用域。
因此,当传递到addCookies
时,account.cookies
相当于仅调用addCookies
本身,因为account.cookies
和account
本身是您正在调用addCookies
的范围中的undefined
。
- 使用Objective-C的JavaScript注入方法
- 正在注入包含JS的HTML
- 在jquery中为显示/隐藏设置cookie
- 迷你$provider注入茉莉花和角
- 按下按钮时保存cookie
- Angularjs工厂注入错误
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何在Ionic Android中将Javascript注入到web视图中
- 如何在Analytics.js中始终了解最新的cookie过期时间
- php httponly cookie在浏览器关闭时被删除
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- Android Webview通过Javascript注入CSS
- CORS-服务器端cookie没有保存在chrome浏览器上
- 如何为后台更改程序代码设置cookie
- Meteor:在启动时将html注入客户端文件
- 如何从另一个域加载cookie
- Chrome API未在嵌套回调中注入cookie
- 如何在angularjs的自定义服务中注入$cookie
- 为什么我不能注入角cookie
- 我如何保护我的网站从注入(Cookie编辑)