背景:因为最近一个需求要做一个 chrome 插件 其中要用到提取某个网站的 cookie 的需求,本人是搞后端的,几乎没写过 js (勿喷...),但这个插件又要很快上
问题:现在 cookie 提取后希望赋值到 input 的 value 内,但怎么也赋值不过去(赋值给到 input 栏用来提交表单..)
代码:
var ck = {
cookies: []
};
function getCookies()
{
chrome.cookies.getAll({"url": 'https://www.example.com'}, function(cookie) {
for(i=0;i<cookie.length;i++)
{ ck.cookies.push(cookie[i].name+'='+cookie[i].value) }
});
document.getElementById('cookies_name').value = ck.cookies.join(';');
}
window.onload = getCookies;
会请最先解决问题的喝杯咖啡...或者等值红包
1
Exia 2018-07-19 16:23:43 +08:00
这个要什么有偿啊,ck.cookies 是个数组,获取里面的内容是应该是 ck.cookies[i].name 吧
|
3
regicide OP @Exia 数据已经转成字符串去赋值了 但据我调试观察 ck.cookies.push 没有报错但也没成功 函数单独运行是提取了的
|
4
torbrowserbridge 2018-07-19 16:35:30 +08:00 1
document.getElementById('cookies_name').value = ck.cookies.join(';');
这一行放到回调函数里面去 |
5
kualalumpur 2018-07-19 16:35:42 +08:00 1
你的賦值是沒錯的,不過 Chrome 插件中的 cookies.getAll 是異步的, 所以你應該這樣寫:
(把 document.getElementById('cookies_name').value = ck.cookies.join(';'); 放到回調函數中去) ``` var ck = { cookies: [] }; function getCookies() { chrome.cookies.getAll({"url": 'https://www.example.com'}, function(cookie) { for(i=0;i<cookie.length;i++){ ck.cookies.push(cookie[i].name+'='+cookie[i].value) } document.getElementById('cookies_name').value = ck.cookies.join(';'); }); } window.onload = getCookies; ``` https://paste.ubuntu.com/p/rcyrMrztV5/ |
6
Exia 2018-07-19 16:38:14 +08:00
@regicide
你试试这样写 chrome.cookies.getAll({"url": 'https://www.example.com'}, function(cookie) { for(i=0;i<cookie.length;i++) { var str = cookie[i].name+'='+cookie[i].value; ck.cookies.push(str); } }); |
8
regicide OP |
9
yulon 2018-07-19 16:41:33 +08:00 1
Chrome API 基本都是异步的,所以回调还没运行时,你给 #cookies_name 的当然是空值啦。。。
|
11
kualalumpur 2018-07-19 16:49:46 +08:00
@regicide 客氣了,只是注意一下許多(不是全部)的 Chrome 插件 API 中 callback 都是異步的,所以需要注意一下執行順序和作用域就好了,可以參照官方文檔:
https://developer.chrome.com/extensions/cookies |
13
regicide OP @kualalumpur get
|