我创建了一个方法来检索一些数据(纬度、经度点)并打开一个窗口来映射它们。
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();
}
数据变量填充以下内容:
然而我得到了以下区域:
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 行。
下面的代码对我有用:
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 时提醒用户:
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/