好久沒有寫過js了,近日項目中,有個需求就是,新打開窗口頁面,對于新窗口我總結以下2點
1.最基本的彈出窗口代碼window.open()這個也相對簡單,大家都調用過,建義大家用絕對路徑(
http://),以下是參數
window.open 彈出新窗口的命令;
'page.html' 彈出窗口的文件名;
'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側的象素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動欄。
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態欄內的信息(通常是文件已經打開),yes為允許;
用這個方法在瀏覽器中,基本都會被屏蔽,大家可以通過
var val = window.open(url),返回值來判斷
if(!val){
這里表示被屏蔽了,沒有成功,。大家可以在這里加個相對應的業務代碼。我當時如果處理是如果屏蔽了,
用document.location.href=url內部跳轉。
}
2、以上方法最基本的問題沒有解決,就是屏蔽。所以告訴大家一個最完美window.open()不會
屏蔽的,道理很簡單,就是建一個form.然后提交form,因為form可以在新窗口提高
給大家看看代碼吧。
在你的頁面里<form action="" method="get" target="_blank" id="tzForm" name="tzForm"/>
<div id="J_formStr"></div>
</form>
然后js
function openUrl(urlStr){
var pStr="";
if(urlStr.indexOf("?")!= -1){
var str = urlStr.substr(urlStr.indexOf("?")+1,urlStr.length);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++){
pStr=pStr+"<input type='hidden' name='"+strs[i].split("=")[0]+"' value='"+strs[i].split("=")[1]+"' />";
}
}
document.getElementById("J_formStr").innerHTML=pStr;
document.tzForm.action=urlStr;
document.tzForm.submit();
}
大家可能會問,為什么還要這多代碼。不就是一個提交表單。給大家說說原因吧
(1) 為什么用get,而不用post,在新窗口頁面如果用post然后刷新。會有一個提交數據的對話框,所以才用get
(2)用get提交有個很關鍵的問題,如果你的url提交地址中有相對應的參數,打個比方,***.jsp?a=1&b=2在新窗口中
?a=1&b=2參數丟失掉。所以在上面有個pStr這個就是解析url中的參數,然后動態創建的表單元素,這樣參數就不會
丟失。
我項目已經用了,感覺還不錯,確實是很基礎的東西,分享一下,歡迎大家拍磚。。。
posted on 2010-07-05 16:09
青菜貓(孫宇) 閱讀(3288)
評論(10) 編輯 收藏 所屬分類:
js