Javascript 在chrome扩展中提交表单不会';行不通

Javascript 在chrome扩展中提交表单不会';行不通,javascript,html,google-chrome-extension,Javascript,Html,Google Chrome Extension,我正在构建一个chrome扩展,它包含在一个表单上,该表单在提交时执行onsubmit=“submit();return false;” 我知道submit方法是有效的,因为我在表单外部创建了一个按钮,上面有onclick=“submit()”,效果非常好 表格如下: <form method="post" name="gaffeForm" onsubmit="submit(this); return false;"> <div> <div

我正在构建一个chrome扩展,它包含在一个表单上,该表单在提交时执行
onsubmit=“submit();return false;”

我知道submit方法是有效的,因为我在表单外部创建了一个按钮,上面有
onclick=“submit()”
,效果非常好

表格如下:

<form method="post" name="gaffeForm" onsubmit="submit(this); return false;">
    <div>
        <div class="submitField">
            <p class="formp">Title :</p>
            <input type="text" name="title" size="50" id="pageTitle" placeholder="Title" required />
        </div>
        <div class="submitField">
            <p class="formp">URL :</p>
            <input type="url" name="url" size="50" id="pageURL" placeholder="URL" required />
        </div>
        <div class="submitField">
            <p class="formp">Error :</p>
            <textarea name="gaffe" rows="5" cols="50" id="pageGaffe" placeholder="Gaffe" required ></textarea>
        </div>
        <div class="submitField">
            <p class="formp">Comment :</p>
            <textarea name="comment" rows="5" cols="50" id="gaffeComment" placeholder="Your comment on the gaffe" required ></textarea>
        </div>
        <div class="submitField">
            <p class="formp">Tags :</p>
            <input type="text" name="tags" size="50" id="gaffeTags" placeholder="Separate the tags with a comma" required />
        </div>
        <div id="GaffeSubmit">
            <input type="submit" value="Submit" />
        </div>
    </div>
</form>

所以,当我点击提交并填写所有字段时,发生的是字段注释和标记变为空白,就是这样。。。我尝试了很多不同的执行
submit()
的方法,但都没有成功。。。谢谢。

页面是从扩展加载的还是从网站加载的,并且您正在尝试在名为的扩展内容脚本中使用
submit()
函数


如果
submit
函数位于内容脚本中,则无法从网站调用该函数,因为chrome扩展安全系统不允许在内容脚本中的页面内容和javascript之间调用javascript。

跨源策略禁止向其他端口发送请求。如果打开错误控制台,您可能会看到一个安全错误


您可以在清单中设置域权限,但不能设置端口。

表单位于popup.html中,提交也是popup.html.Ah中的一个函数。是否在popup.html中显式加载内容脚本?我不确定内容脚本是否都自动可用于html文件,或者是否必须显式加载它们,并且源文件片段似乎没有加载任何显式脚本文件。如果您将
submit
函数复制到popup.html中,那么它是否有效?我的内容脚本与此无关。我的提交功能在popup.htmlI中。我不明白你所说的端口是什么意思。。。XMLHttpRequest工作正常,因为函数submit在表单外的按钮执行时工作正常,但在我按下submit时不会执行。我尝试过删除函数中的所有内容,只是发出一个警报,但仍然没有execute@Alberto伊莱亚斯:我的意思是你正试图屈服于3000端口。除非您当前正在端口3000处查看此页面,否则它将不允许您将XMLHttpRequest从80设置为3000。好吧,它确实可以工作!它位于端口3000中,因为我的服务器现在位于localhost中,所以web位于该端口。但我知道这个方法是有效的,因为我是通过在“从不同的提交”外按不同的按钮来执行的。
function submit(f) {
    var xhr = new XMLHttpRequest();

    var title = $('#pageTitle').val().replace(/\//g, "%2F");
    var url = $('#pageURL').val().replace(/http:\/\//, "").replace(/https:\/\//, "").replace(/\//g, "%2F");
    var gaffe = $('#pageGaffe').val().replace(/\//g, "%2F");
    var comment = $('#gaffeComment').val().replace(/\//g, "%2F");
    var tags = $('#gaffeTags').val().replace(/\//g, "%2F");

    xhr.open("POST", "http://localhost:3000/F0ETF87dar8F7deO92K/" + title + "/" + url + "/" + gaffe + "/" + comment + "/" + tags, true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (req.status == 200) window.close();
        }
    };
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.setRequestHeader("Connection", "close");
    xhr.send();
    return false;
}