javascript - 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLFormElement.submit]

标签 javascript dom

我创建了一个方法来检索一些数据(纬度、经度点)并打开一个窗口来映射它们。

function openMapWindow (data) {
    alert(data);

    var mapForm = document.createElement("form");
    mapForm.target = "Map";
    mapForm.method = "POST"; // or "post" if appropriate
    mapForm.action = "/map.php";

    var mapInput = document.createElement("input");
    mapInput.type = "text";
    mapInput.name = "addrs";
    mapInput.value = data;
    mapForm.appendChild(mapInput);

    document.body.appendChild(mapForm);

    window.open("", "Map", "status=0,title=0,height=600,width=800");

    mapForm.submit();

}

数据变量填充以下内容:

map coorindates

然而我得到了以下区域:

mapInput.value = data;

ERROR: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLFormElement.submit]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://www.xxx.xxx :: openMapWindow :: line 244" data: no]

Line 0

最佳答案

这与您浏览器的弹出窗口拦截器有关。如果您仔细查看错误,它会将提交“按钮”描述为问题,而不是 mapValue.input 行。

下面的代码对我有用:

http://jsfiddle.net/WDFNL/

function openMapWindow (data) {
    alert(data);

    var mapForm = document.createElement("form");
    mapForm.target = "Map";
    mapForm.method = "POST"; // or "post" if appropriate
    mapForm.action = "/map.php";

    var mapInput = document.createElement("input");
    mapInput.type = "text";
    mapInput.name = "addrs";
    mapInput.value = data;
    mapForm.appendChild(mapInput);

    document.body.appendChild(mapForm);

    window.open("", "Map", "status=0,title=0,height=600,width=800");

    mapForm.submit();
}
openMapWindow('-35.308401,149.124298-35.307841,149.124298');

我确实遇到了您最初描述的错误,但这与我的弹出窗口拦截器有关。一旦我授权 jsfiddle.net 允许弹出窗口,它就开始工作了。

编辑

有一种简单的方法可以对此进行测试,并在用户的弹出窗口阻止程序禁用 map 时提醒用户:

http://jsfiddle.net/WDFNL/1/

function openMapWindow (data) {
    var mapForm = document.createElement("form");
    mapForm.target = "Map";
    mapForm.method = "POST"; // or "post" if appropriate
    mapForm.action = "/map.php";

    var mapInput = document.createElement("input");
    mapInput.type = "text";
    mapInput.name = "addrs";
    mapInput.value = data;
    mapForm.appendChild(mapInput);

    document.body.appendChild(mapForm);

    map = window.open("", "Map", "status=0,title=0,height=600,width=800");

    if (map) {
        mapForm.submit();
    } else {
        alert('You must allow popups for this map to work.');
    }
}
openMapWindow('-35.308401,149.124298-35.307841,149.124298');

注意 map 变量。您可以测试它以查看 window.open 是否返回了窗口句柄,并根据结果采取相应的行动。

关于javascript - 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLFormElement.submit],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5686377/

相关文章:

JavaScript window.location.replace(url) 多次重新加载

javascript - 如何在静态网页上显示我的 Twitter 提要?

javascript - javascript 包、node 包和 react 包有什么区别?

c++ - 频繁读/写小文件会降低性能吗?

javascript - 有什么方法可以监听附加到文档的文档片段吗?

javascript - 如何使 Youtube 上的视频不遮盖灯箱?

javascript - 带有复选框和 anchor 标记的 jquery

javascript - 如何使用CSS动画图像?

javascript - 添加和删​​除带有参数的事件监听器

javascript - 原生 JS 相当于 jQuery 委托(delegate)