在新窗口中打开动态构建的Google URL [英] Opening a dynamically built Google URL in new window

查看:97
本文介绍了在新窗口中打开动态构建的Google URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用最初由Google提供的修改后的代码来制作使用Google Maps的公交旅行计划表.我希望结果在新窗口/选项卡中打开,以便用户不必离开网站(我意识到这是一个有争议的可用性问题,但这是我客户的要求,所以...).

I'm using modified code originally supplied by Google to make a transit trip planner form that uses Google Maps. I'd like the results to open in a new window/tab so the user doesn't have to leave the site (I realize this is a somewhat controversial usability issue, but this is at my client's behest, so...).

下面的代码在标记中使用target ="_ blank"-这似乎是最简单的解决方案-但这在这种情况下不起作用-不确定原因,但认为它可能与动态构建的内容有关网址.

The code below uses target="_blank" in the tag - which seemed like the simplest solution - but that doesn't work in this instance - not sure why, but thought it may have something to do with the dynamically-built URL.

我尝试了从本站点先前类似问题中收集的几种方法,以下方法是其中一种,以及类似

I tried several methods gleaned from previous similar questions on this site, the method below being one of them, as well as something along the lines of

myForm.setAttribute("target", "_blank");

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

but so far nothing has been successful.

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

Here's the code I'm using. Any suggestions would be greatly appreciated.

     <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.这是我创建的用于打开子窗口的功能:

You can try using window.open instead. Here's a function that I created for opening child windows:

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的功能结尾处按以下方式调用它:

Add this function to your page, and at the end of your function that builds the URL, call it like this:

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

这篇关于在新窗口中打开动态构建的Google URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆