
背景:因为最近一个需求要做一个 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 document.getElementById('cookies_name').value = ck.cookies.join(';'); 这一行放到回调函数里面去 |
5 kualalumpur 2018-07-19 16:35:42 +08:00 你的值是的,不 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 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 |