青菜貓(孫宇博客),青菜貓(孫宇博客),青菜貓(孫宇博客)http://www.javasdc.cn/
          posts - 29,  comments - 63,  trackbacks - 0

              好久沒有寫過js了,近日項(xiàng)目中,有個(gè)需求就是,新打開窗口頁面,對(duì)于新窗口我總結(jié)以下2點(diǎn)
            1.最基本的彈出窗口代碼window.open()這個(gè)也相對(duì)簡(jiǎn)單,大家都調(diào)用過,建義大家用絕對(duì)路徑(http://),以下是參數(shù)
          window.open 彈出新窗口的命令;
            'page.html' 彈出窗口的文件名; 
          'newwindow' 彈出窗口的名字(不是文件名),非必須,可用空''代替;
          height=100 窗口高度;
          width=400 窗口寬度;
          top=0 窗口距離屏幕上方的象素值;
          left=0 窗口距離屏幕左側(cè)的象素值;
          toolbar=no 是否顯示工具欄,yes為顯示;
          menubar,scrollbars 表示菜單欄和滾動(dòng)欄。
          resizable=no 是否允許改變窗口大小,yes為允許;
          location=no 是否顯示地址欄,yes為允許;
          status=no 是否顯示狀態(tài)欄內(nèi)的信息(通常是文件已經(jīng)打開),yes為允許;

          用這個(gè)方法在瀏覽器中,基本都會(huì)被屏蔽,大家可以通過
          var val = window.open(url),返回值來判斷
          if(!val){
          這里表示被屏蔽了,沒有成功,。大家可以在這里加個(gè)相對(duì)應(yīng)的業(yè)務(wù)代碼。我當(dāng)時(shí)如果處理是如果屏蔽了,
          用document.location.href=url內(nèi)部跳轉(zhuǎn)。
          }
          2、以上方法最基本的問題沒有解決,就是屏蔽。所以告訴大家一個(gè)最完美window.open()不會(huì)
          屏蔽的,道理很簡(jiǎn)單,就是建一個(gè)form.然后提交form,因?yàn)閒orm可以在新窗口提高
          給大家看看代碼吧。
          在你的頁面里<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();
          }
          大家可能會(huì)問,為什么還要這多代碼。不就是一個(gè)提交表單。給大家說說原因吧
          (1) 為什么用get,而不用post,在新窗口頁面如果用post然后刷新。會(huì)有一個(gè)提交數(shù)據(jù)的對(duì)話框,所以才用get
          (2)用get提交有個(gè)很關(guān)鍵的問題,如果你的url提交地址中有相對(duì)應(yīng)的參數(shù),打個(gè)比方,***.jsp?a=1&b=2在新窗口中
          ?a=1&b=2參數(shù)丟失掉。所以在上面有個(gè)pStr這個(gè)就是解析url中的參數(shù),然后動(dòng)態(tài)創(chuàng)建的表單元素,這樣參數(shù)就不會(huì)
          丟失。
          我項(xiàng)目已經(jīng)用了,感覺還不錯(cuò),確實(shí)是很基礎(chǔ)的東西,分享一下,歡迎大家拍磚。。。

           
          posted on 2010-07-05 16:09 青菜貓(孫宇) 閱讀(3291) 評(píng)論(10)  編輯  收藏 所屬分類: js


          FeedBack:
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽[未登錄]
          2010-07-05 17:19 | Sam
          看了標(biāo)題被吸引了,所以進(jìn)來看看。

          完整的看了你的代碼,已經(jīng)理解你的解決辦法,樓主對(duì)于該問題精神可嘉。

          但我比較懷疑,首先是應(yīng)用場(chǎng)景及環(huán)境。
          1. 不知道你的demo代碼如何寫的(如何彈出的?是手工點(diǎn)擊按鈕還是自動(dòng)彈出等等)。
          2. 在你的測(cè)試環(huán)境中,何種瀏覽器(何種插件)對(duì)該腳本免疫?

          我畢竟這種方法不是新技術(shù)或者特別的技巧。這么說的原因是因?yàn)槟阍谔魬?zhàn)開發(fā)瀏覽器的程序員思維和邏輯,很難想象他們(FF, Chrome..)會(huì)不檢測(cè)你上面的邏輯,或者判斷不出來是否屬于非法彈出窗口。

          期待回復(fù):)  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽[未登錄]
          2010-07-05 17:27 | Sam
          一點(diǎn)補(bǔ)充:
          3. 如果跨域提交是否依然work很好?  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽[未登錄]
          2010-07-05 17:34 | 劉俊杰
          嗯,不錯(cuò),謝了
            回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽
          2010-07-05 19:34 | 青菜貓(孫宇)
          @Sam
          呵呵,目前火狐,IE6,傲游,Chrome都已經(jīng)通過,手工點(diǎn)擊按鈕點(diǎn)的,因?yàn)槲乙僮饕粋€(gè)邏輯,然后在新窗口,
          肯定不會(huì)非法彈出窗口。因?yàn)槭莊orm提交  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽
          2010-07-05 19:36 | 青菜貓(孫宇)
          @Sam
          其實(shí)這邊應(yīng)用還很多場(chǎng)景的,主要是在淘寶社區(qū)淘江湖里,。呵呵  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽
          2010-07-06 01:50 | POP
          給個(gè)完整的DEMO呀。。。。這都不知道如何用  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽
          2010-07-06 08:50 | liucr
          樓主:是不是這種方法與〈a href="*.jsp?a=1&b=2" target="_blank"..../〉效果一樣呀?如果這樣是不是可以不那么麻煩?  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽
          2010-07-06 09:14 | 青菜貓(孫宇)
          @liucr
          恩,一樣的效果,是因?yàn)樵趈s中要新窗口  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽
          2010-07-06 13:10 | ding
          Dim intFPO, intNFPO As Integer
          '搜索列
          With Worksheets("PivotTable").Rows(501)
          Set C = .Find("PO-框架下PO", LookIn:=xlValues)
          If Not C Is Nothing Then
          intFPO = C.Column
          End If
          End With
            回復(fù)  更多評(píng)論
            
          # re: 關(guān)于網(wǎng)頁打開新窗口的解決方案,拒絕屏蔽
          2010-08-04 10:09 | da
          那怎么讓這個(gè)新彈出的窗口去掉工具欄呢,望能指教  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2010年7月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          青菜貓(孫宇)結(jié)交天下朋友,在網(wǎng)上吸取知識(shí)..

          常用鏈接

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          青菜貓(孫宇博客),青菜貓(孫宇博客),青菜貓(孫宇博客)http://www.javasdc.cn/
          主站蜘蛛池模板: 清水河县| 炉霍县| 如皋市| 金川县| 中方县| 达拉特旗| 南充市| 龙里县| 海城市| 永和县| 柯坪县| 波密县| 永兴县| 正蓝旗| 宣武区| 双流县| 绍兴市| 广河县| 增城市| 克山县| 桃园县| 安丘市| 清水河县| 邛崃市| 准格尔旗| 天峨县| 鄱阳县| 福贡县| 长春市| 信丰县| 古浪县| 昌图县| 东安县| 琼海市| 尖扎县| 邻水| 九龙城区| 玛曲县| 昆明市| 桃源县| 郎溪县|