
背景:因为最近一个需求要做一个 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 年 7 月 19 日 这个要什么有偿啊,ck.cookies 是个数组,获取里面的内容是应该是 ck.cookies[i].name 吧 |
4 torbrowserbridge 2018 年 7 月 19 日 document.getElementById('cookies_name').value = ck.cookies.join(';'); 这一行放到回调函数里面去 |
5 kualalumpur 2018 年 7 月 19 日 你的值是的,不 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 年 7 月 19 日 @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 年 7 月 19 日 Chrome API 基本都是异步的,所以回调还没运行时,你给 #cookies_name 的当然是空值啦。。。 |
11 kualalumpur span class="ago" title="2018-07-19 16:49:46 +08:00">2018 年 7 月 19 日 @regicide 客了,只是注意一下多(不是全部)的 Chrome 插件 API 中 callback 都是步的,所以需要注意一下行序和作用域就好了,可以照官方文: https://developer.chrome.com/extensions/cookies |
13 regicide OP @kualalumpur get |