sneezry / chrome_extensions_and_apps_programming Goto Github PK
View Code? Open in Web Editor NEWChrome扩展及应用开发
Home Page: http://www.ituring.com.cn/book/1472
Chrome扩展及应用开发
Home Page: http://www.ituring.com.cn/book/1472
🍆🍑💦🐍
vrdj03213213213 fdsafdsafdsa
这个问题本质上是js同步异步的问题,和这个仓库教程没有太大关系,但是问题困扰我很久了,所以斗胆发个issue,大家讨论下。
问题还原:我这里想做的事情是
1,拦截http请求,然后对请求头进行修改一些修改,也就是用 :chrome.webRequest.onBeforeSendHeaders.addListener
这个函数。
2,这函数里面接受一个参数,对传入的请求对象某些操作,大概也就是这样:
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details){
//do something
return {requestHeaders: details.requestHeaders};
},
{
urls: [
"<all_urls>"
]
},
[
"blocking",
"requestHeaders"
]
);
3,这里,具体怎么修改details对象,我需要根据用户的设置进行操作;而且这里,我想将用户的设置存在chrome.storage.sync
方便设置能进行同步。但是 chrome.storage.sync.get
是个异步函数,通过get拿到存储信息之后,并不能返回出来,而要传入一个回调函数。
这时候就成了这样:
function(details){
chrome.storage.sync.get('user_settings',function (result) {
//根据拿到的用户设置,来操作details
})
return {requestHeaders: details.requestHeaders}
}
但是我们知道,这样由于异步的关系,这样details
并没有被修改,就直接返回了,所以说从sync中读取数据并进行相关操作,并没有生效
。
这里,我尝试了Promise、async/await等各种办法,都没能解决这里异步函数拿到返回值再进行相关操作的问题。
不知道这里有什么解决办法,还是说由于js本身的异步机制没办法解决?
您好!我在浏览器运行了一下http_server这个应用,其中background.js中有一段代码(52-54行):
var body = "<h1>It Works!</h1>"+
"<hr />"+
"Request Header:<br />"+header;
在浏览器显示是:
当我想把"It Works"变为中文字符的时候会出现乱码,请问是什么原因呢?
另外您在书中提到"http协议中,一个字符占8位,故仅需1个字节就可完成存储",那么我想问下如果遇到中文字符,一个汉字占2个字节,http协议1个字节如何完成存储呢?
Just delete it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.