使用body onload打开一个新窗口

时间:2012-07-26 20:50:15

标签: javascript

编辑 - 这是代码

<html> 
<head> 

<script type="text/javascript"> 
var prodURL = "https://blah"; 

function postwith (to, params) { 
var myForm = document.createElement("form"); 
myForm.method = "post"; 
myForm.target = "_self"; 
myForm.action = to; 

for (var p in params) { 
var myInput = document.createElement("input"); 
myInput.setAttribute("name", p); 
myInput.setAttribute("value", params[p]); 
myInput.setAttribute("type", "hidden"); 
myForm.appendChild(myInput); 
} 

document.body.appendChild(myForm); 
myForm.submit(); 

} 
</script> 

<style type="text/css"> 
#overlayPageLoad { 
background: none repeat scroll 0 0 white; 
height: 100% !important; 
left: 0; 
position: absolute; 
text-align: center; 
top: 0; 
width: 100% !important; 
} 
#overlayPageLoad .middle { 
color: #888888; 
font-size: 16px; 
left: 0; 
position: absolute; 
top: 50%; 
width: 100%; 
} 
</style> 

</head> 

<body onload= "postwith(prodURL, {SF_SESSION:'{!$Api.Session_ID}',SF_ENDPOINT:'{!$Api.Partner_Server_URL_120}'})"; > 

<div id="overlayPageLoad"> 
<span class="middle"> 
<img src="https://prettypicture"> 
&nbsp;Connecting... 
</span> 
</div> 

</body> 
</html>

1 个答案:

答案 0 :(得分:2)

现代浏览器只允许打开新窗口直接响应特定的用户生成的操作,例如click个事件。您无法在其他时间打开它们(例如窗口加载或卸载),因为它曾经是浏览器允许的,并且它很快就被滥用了。所以现在我们有了弹出窗口拦截器。

更新:重新评论:

  

...业务目前在现有窗口中打开了链接,现在他们想要在另一个窗口中打开..

你能做到。你可以在链接到新窗口所需页面的页面中进行,而不是打开的页面,如下所示:

<a href="..." target="_blank">text of link</a>

请参阅a元素的target attribute