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

Opening a dynamically built Google URL in new window

本文关键字:Google URL 构建 动态 在新窗口中打开      更新时间:2023-09-26

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

下面的代码在标签中使用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>

您可以尝试使用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);