火狐浏览器插件开发
详情
在火狐浏览器开发插件,点击插件时,弹出对话框,填写内容后,可以将指定格式内容提交到远程服务。
后台服务
此处选用python的 FastAPI
代码如下:
from typing import Union
from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
origins = [
"*",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
class People(BaseModel):
name:str
content: str
@app.post("/people")
def post_item(people: People):
print(people)
return {"people": people}
插件代码
文件结构
代码内容
manifest.json
{
"manifest_version": 2,
"name": "Borderify",
"version": "1.0",
"description": "Adds a red border to all webpages matching mozilla.org.",
"browser_action": {
"default_icon": "icons/beasts-32.png",
"default_title": "Beastify",
"default_popup": "popup/page.html"
},
"permissions": [
"activeTab"
],
"content_scripts": [
{
"matches": ["*://*.baidu.com/*"]
}
]
}
popup/page.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div>
name <input type="text" id="context" name="fname"><br>
<input type="submit" id="submit" value="提交">
</div>
<script src="page.js">
</script>
</body>
</html>
popup/page.js
document.getElementById("submit").addEventListener('click', function() {
let value = document.getElementById("context").value
console.log(4)
browser.tabs.query({active: true, currentWindow: true})
.then(res => {
fetch('http://127.0.0.1:8000/people', {
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": JSON.stringify({
"name": value,
"content": JSON.stringify(res[0].url)
})
})
});
})
成品