我创建了一个方法来检索一些数据(lat,lon points)并打开一个窗口来映射它们。
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;
错误:未捕获的异常: [例外......“组件返回 失败代码:0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLFormElement.submit]” nsresult:“0x80004005 (NS_ERROR_FAILURE)“位置:”JS frame :: http://www.xxx.xxx :: openMapWindow :: line 244“data:no]
第0行
答案 0 :(得分:6)
它与浏览器的弹出窗口拦截器有关。如果仔细查看错误,它会将提交“按钮”描述为问题,而不是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被允许弹出窗口,它就开始工作了。
修改强>
有一种简单的方法可以对此进行测试,并在用户弹出窗口阻止程序禁用地图时提醒用户:
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
是否返回了窗口句柄,并根据结果采取相应的行动。