在新窗口中打开动态构建的Google URL

时间:2011-09-15 19:54:55

标签: javascript forms google-maps new-window

我正在使用Google最初提供的修改代码来制作使用Google地图的公交旅行计划表单。我希望结果在新的窗口/标签中打开,这样用户就不必离开网站了(我意识到这是一个有点争议的可用性问题,但这是我客户的要求,所以......)。

下面的代码在标签中使用了target =“_ blank” - 这似乎是最简单的解决方案 - 但在这个实例中不起作用 - 不确定原因,但认为它可能与动态构建有关URL。

我尝试了几个从此网站上类似问题收集的方法,下面的方法就是其中之一,以及

的内容。
myForm.setAttribute("target", "_blank");

但到目前为止没有任何成功。

这是我正在使用的代码。任何建议将不胜感激。

     <script language="JavaScript" type="text/javascript">
 // Edit the strings below this line
 var startExample = "USC";
 var endExample = "201 N Los Angeles St.";
 var zip = "90012";
 // End edit block

 // Get and parse the user's current date/time
 var date = new Date();
 var isPM = false;
 var currentTime = date.getHours();
 var currentDate = "";
 var amOption = '<option value="am">AM';
 var pmOption = '<option value="pm">PM';

 if(currentTime > 11)
 isPM = true;
 currentTime %= 12;
 if(currentTime == 0)
 currentTime = 12;

 currentTime += ':';
 if(date.getMinutes() < 10)
 currentTime += '0';
 currentTime += date.getMinutes();

 if(isPM)
 pmOption = '<option selected="true" value="pm">PM';
 else
 amOption = '<option selected="true" value="am">AM';

 if(date.getMonth() < 9)
 currentDate = '0';
 currentDate += (date.getMonth() + 1) + '/';
 if(date.getDate() < 10)
 currentDate += '0';
 currentDate += date.getDate() + '/' + date.getFullYear();

 // Builds the destination URL
 function buildURL() {
 var loc = 'http://www.google.com/maps?ie=UTF8&f=d&';

 for (var i = 0; (i < document.myForm.length - 1); i++) {
 if(document.myForm[i].name == 'ampm')
 continue;
 if(document.myForm[i].name == 'time')
 loc += document.myForm[i].name + '=' + document.myForm[i].value + document.myForm.ampm.value + '&';
 else {
 if(document.myForm[i].name == 'saddr')
 loc += document.myForm[i].name + '=' + document.myForm[i].value + '+near+' + zip + '&';
 else
 loc += document.myForm[i].name + '=' + document.myForm[i].value + '&';
 }
 }
 loc+='dirflg=r';


 location.href=loc;
 return true;


 }
</script>

 <form name="myForm" id="myForm" action="#" target="_blank">

    <p>Powered by <a href="http://google.com/transit" target="_blank">Google Maps</a></p>
   <label for="saddr"><strong>Start</strong> e.g.
     <script language="JavaScript" type="text/javascript">
     document.write(startExample)
     </script>
     </label>

  <input type="text" name="saddr" maxlength="2048" title="Enter the Origin Address" class="startend" />

     <label for="daddr"><strong>End</strong> e.g.
       <script language="JavaScript" type="text/javascript">document.write(endExample)</script></label>

       <input type="text" name="daddr" maxlength="2048" title="Enter the Destination Address" class="startend" />
  <div class="gadgetform-row">
 <script language="JavaScript" type="text/javascript">
 document.write('<div class="datewrapper">');
 document.write('<label for="date"><strong>Date</strong></label><br />');
 document.write('<input class="date" type="text" id="fdate" name="date" value="' + currentDate + '" maxlength="10" title="Enter the Date in MM/DD/YY format">');
 document.write('</div>');
 document.write('<div class="timewrapper">');
 document.write('<label for="time"><strong>Time</strong></label><br />');
 document.write('<input class="time" type="text" id="ftime" name="time" value="' + currentTime + '" maxlength="8" title="Enter the Time in HH:MM AM or PM format">');
 document.write('</div>');
 document.write('<div class="ampmwrapper">');
 document.write('&nbsp;<br />');
 document.write('<select name="ampm" class="ampm">' + amOption + pmOption + '</select>');
 document.write('</div>');
 document.write('<div class="clear"></div>');
 </script>
 </div>      

<div class="planby">
  <label for="ttype"><strong>Plan by:</strong>&nbsp;</label
><select name="ttype">
    <option value="dep">Departure Time </option>
    <option value="arr">Arrival Time</option>
    </select>
</div>

<a class="button" href="javascript:void();" onclick='return buildURL();'><span class="plan">Plan My Trip</span></a> 
</form>

1 个答案:

答案 0 :(得分:2)

您可以尝试使用window.open代替。这是我为打开子窗口而创建的函数:

openChildWindowWithDimensions = function(url, width, height, showMenu, canResize, showScrollbars) {
    var childWindow = window.open(url, "", "\"width=" + width + ",height=" + height + ",menubar=" + (showMenu ? "1" : "0") + ",scrollbars=" + (showScrollbars ? "1" : "0") + ",resizable=" + (canResize ? "1" : "0") + "\"");
    if (childWindow){
        childWindow.resizeTo(width, height); //IE9 dimensions bug
    }
}

将此功能添加到您的页面,并在构建URL的函数末尾,将其命名为:

openChildWindowWithDimensions(loc, 800, 600, true, true, true);