Javascript 在firefox扩展页面中提交表单
我正在开发一个简单的Firefox扩展。我有一个页面,其中包含一个输入用户名的表单。当用户单击浏览器操作按钮时,该页面将打开。该文件中有一个javascript文件,我想从中将该名称发送到后端节点.Js服务器。但我不知道如何执行表单提交,我尝试了不同的方法,但没有任何效果。Javascript 在firefox扩展页面中提交表单,javascript,node.js,firefox-addon,firefox-addon-webextensions,Javascript,Node.js,Firefox Addon,Firefox Addon Webextensions,我正在开发一个简单的Firefox扩展。我有一个页面,其中包含一个输入用户名的表单。当用户单击浏览器操作按钮时,该页面将打开。该文件中有一个javascript文件,我想从中将该名称发送到后端节点.Js服务器。但我不知道如何执行表单提交,我尝试了不同的方法,但没有任何效果。 这是我的manifest.json文件: { "manifest_version": 2, "name": "Ext", "version": "1.0", "description": "My Experi
这是我的
manifest.json
文件:
{
"manifest_version": 2,
"name": "Ext",
"version": "1.0",
"description": "My Experiments.",
"icons": {
"48": "icons/ff.jpg"
},
"permissions": [
"webRequest",
"storage",
"alarms",
"tabs",
"notifications",
"activeTab",
"<all_urls>"
],
"background": {
"scripts": [
"background-script.js"
]
},
"browser_action": {
"default_icon": "icons/toggle-off.png",
"default_title": "EXT"
}
}
这是我的index.js
文件,我想从中提交表格
document.addEventListener("click", (e) => {
console.log(e.target)
if (e.target.classList.contains("button-blue")) {
console.log("sss")
e.preventDefault();
var xhr = new XMLHttpRequest();
let savedItem = browser.storage.local.get("ip");
savedItem.then(function (item) {
document.getElementById('ip').value = item.ip;
xhr.addEventListener("load", reqListener);
xhr.open('POST', 'http://localhost:2056/save/name', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(`name=${document.getElementById('name').value}&&ip=${item.ip}`);
return false;
});
}
});
function reqListener() {
const resp = JSON.parse(this.responseText);
if (resp.error)
console.error(resp.errorMsg);
else {
browser.tabs.query({active: true, currentWindow: true})
.then(function (tabs) {
browser.tabs.remove(tabs[0].id);
browser.tabs.create({
url: './pages/second_page.html'
});
});
}
}
我没有从
e.target
中得到任何信息,它在控制台上显示
。我不确定是什么原因导致了您这边的问题,我根据您的评论创建了一个扩展,从您的代码中删除了一些额外的行,它在Chrome和Firefox中对我有效:
这是我使用的JavaScript代码:
document.addEventListener("click", (e) => {
e.preventDefault();
console.log('e.target: ',e.target)
});
请重新检查您的代码或与我们共享整个项目好吗?我不确定是什么原因导致了您的问题,我根据您的评论创建了一个扩展,从您的代码中删除了一些额外的行,它在Chrome和Firefox中对我有效: 这是我使用的JavaScript代码:
document.addEventListener("click", (e) => {
e.preventDefault();
console.log('e.target: ',e.target)
});
请重新检查您的代码或与我们共享整个项目好吗?后台脚本无法访问页面的上下文。如果要操作页面的DOM,您必须使用内容脚本。我没有使用后台脚本访问DOM元素
index.js
是我与html页面关联的脚本文件。后台脚本无法访问页面的上下文。如果要操作页面的DOM,必须使用内容脚本。我没有使用后台脚本访问DOM元素index.js
是我与html页面关联的脚本文件。我通过在document.reday
函数中注册eventListener解决了这个问题。我通过在document.reday
函数中注册eventListener解决了这个问题。