Firefox扩展无法发出发布请求,但可以使用常规脚本标记

时间:2019-07-01 08:48:11

标签: javascript xmlhttprequest firefox-addon

我正在尝试从我的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标记的行为相同。我被困住了,所有帮助我们都感激不尽。

1 个答案:

答案 0 :(得分:0)

我通过更新manifest.json文件中的permissions属性来解决此问题。

这是我添加的"permissions": ["*://*/*"]。现在,它与content_scripts属性的matchs字段中的表达式匹配。

非常感谢@Titus提供有关manifest.json文件的提示!