我正在尝试从我的firefox扩展程序发出发布请求。我面临的问题是,加载扩展程序的脚本时,浏览器似乎甚至没有尝试发出发布请求。
为确保该问题与代码本身无关,我创建了一个带有script标记的index.html文件,并将代码粘贴到该文件中,该文件可以正常工作。
我的扩展脚本文件(不起作用)
console.log('loaded script')
this.addEventListener('keypress', (e) => {
if (e.key === 'a') {
const url = 'my-server-endpoint'
var selectedText = window.getSelection().toString()
var xhttp = new XMLHttpRequest()
xhttp.open('POST', url, true)
xhttp.setRequestHeader('Content-Type', 'text/plain')
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(JSON.parse(xhttp.response).url)
}
}
xhttp.send(selectedText)
}
})
我的index.html文件(可以工作)
<html>
<head>
<meta charset="utf-8">
</head>
Some sample text
<script>
this.addEventListener('keypress', (e) => {
if (e.key === 'a') {
const url = 'my-server-endpoint'
var selectedText = window.getSelection().toString()
var xhttp = new XMLHttpRequest()
xhttp.open('POST', url, true)
xhttp.setRequestHeader('Content-Type', 'text/plain')
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(JSON.parse(xhttp.response).url)
}
}
xhttp.send(selectedText)
}
})
</script>
</html>
我的期望是,从扩展名加载的javascript的行为应与script标记的行为相同。我被困住了,所有帮助我们都感激不尽。
答案 0 :(得分:0)
我通过更新manifest.json文件中的permissions属性来解决此问题。
这是我添加的"permissions": ["*://*/*"]
。现在,它与content_scripts属性的matchs字段中的表达式匹配。
非常感谢@Titus提供有关manifest.json文件的提示!