jsp頁面點選button彈出新視窗但會顯示session已過期或者是未登入
其實是因為新開一個瀏覽器視窗(不是標籤頁)是會建立一個新的session id的,瀏覽器的session 管理機制是,
A使用者開啟一個視窗第一個訪問伺服器的時候後面會帶一個引數sessionid,而這時候這個session id 是空的,
伺服器通過getsession id 拿到一個空值,就會去建立一個session id 給user,然後一併response 給瀏覽器端使用者A,
如果再次在當前視窗訪問伺服器,這時候瀏覽器就會把剛剛獲得的session id 以引數的形式再傳給伺服器,伺服器會認為是同一個會話。
而這時候如果再新開一個視窗(等於新開了一個程序,資料不能跨程序訪問),這時候瀏覽器傳給伺服器端的session id 是空的。
這也就是為什麼如果window.open 如果新開了一個視窗會要求再次登入的原因。
而開啟一個新標籤頁,實際上還是在同一個視窗,因此是同一個session。
我們知道,在<a>標籤中通過設定target="_blank"就可以實現開啟新標籤的效果。但有時候我們需要通過Javascript來開啟新標籤,那麼怎麼
實現呢?方法如下:
window.open("http://www.test.com");
或者:
window.open("http://www.test.com", "_blank"); //注意第二個引數
有人或許會覺得奇怪,window.open()不是用來開啟新視窗的麼,怎麼還可以開啟新標籤啊?其實只有在window.open()中指定了第三個屬性
(即新視窗的特徵)時瀏覽器才會開啟新的視窗,在沒指定第三個屬性時只會在當前視窗開啟新的標籤(在IE中,如果要開啟的URL與當前
頁面URL不屬於同一個主域名則開啟新視窗;在Chrome中,如果window.open()函式不是被滑鼠鍵盤事件呼叫的,而是頁面直接呼叫或通過
定時器等呼叫的,則開啟新視窗而非標籤)。此外,下面適用於<a>標籤的target引數同樣適用於window.open()的name引數:
注意事項:
1.在IE中,如果要開啟的域名和當前域名不屬於同一個主域名,則會在新的視窗中開啟(<a>標籤也是這樣)。
2. 在Chrome中,如果window.open()函式不是被滑鼠鍵盤事件呼叫的,而是頁面直接呼叫或通過定時器(包括滑鼠鍵盤觸發的定時器)等
呼叫的,則開啟新視窗而非標籤。
2.在新視窗或新標籤中,window.open()的_parent和_top引數是無效的(只有在frame中時有效)。
3.framename引數可以設定為當前頁面內的frame的name值、新視窗的name值,或者新標籤的name值
var el = document.createElement("a");
document.body.appendChild(el);
el.href = url; //url 是你得到的連線
el.target = '_new'; //指定在新視窗開啟
el.click();
document.body.removeChild(el);
最近在使用window.open時忽略了一個細節問題:window.open新開啟一個視窗,但是有時卻是新開啟一個視窗有時開啟一個新標籤頁。雖然對一般的需求來說,這個兩種情況都無所謂,但是對於那種有強烈區分的需求來說還是要注意的。那麼怎麼會出現這種不同的開啟情況呢,這要從window.open方法的用法和不同瀏覽器來區分。
1、window.open的用法容易忽視的細節
window.open方法有三個引數:
window.open(url, [name], [configuration])
其中:
- url, 為要新開啟頁面的url
- name,為新開啟視窗的名字,可以通過此名字獲取該視窗物件
- configuration,為新開啟視窗的一些配置項,比如是否有選單欄、滾動條、長高等等資訊
例如,新開啟一個沒有選單欄、標題欄、工具欄,但是有滾動條、狀態列、位址列且可伸縮視窗的方法呼叫如下:
window.open("index.html","newWindow","menubar=0,scrollbars=1, resizable=1,status=1,titlebar=0,toolbar=0,location=1");
以上只是簡要描述了window.open的方法,但是這個方法容易忽略的地方就是:新開啟視窗名字可以是自定義的值,此外還可以是以下幾個值,與超連結a的target屬性值相同
視窗name值 | 描述 |
_blank | 預設的,在新視窗開啟連結的url |
_self | 在當前視窗開啟連結url |
_parent | 在父視窗開啟連結url |
_top | 在頂級視窗開啟url |
framename | 在指定的框架中開啟連結url |
2、window.open開啟新視窗還是開啟新標籤頁
呼叫window.open是開啟新視窗,還是開啟新標籤頁,其實沒有什麼要緊關係,但是有些需求在這方面有很強的意願時,那就得區分一下了。具體的開啟什麼還是根據具體情況來定的,以下結論是經過本人測試得出的,若有不正確的地方,請大家批評指正。
1、window.open(url)或者window.open(url, name),其中name為_blank
- 標準瀏覽器、IE9+是新標籤開啟連結url
- ie6-8是新視窗開啟連結url
2、window.open(url, name),其中name為非_blank的其他4個值
此時會會在指定視窗或者frame開啟連結url
3、window.open(url, name, configration)
只要配置了configration,所有瀏覽器都是新視窗開啟連結url
3、使用window.open方法開啟的視窗可能被攔截的替代方案
現在有些瀏覽器為了安全起見,可能會阻止window.open開啟的連結url,不管是以標籤還是以視窗開啟。這時可能需要使用者進行瀏覽器設定允許彈新頁,讓使用者設定瀏覽器是極不可取的做法,尤其像電商類網站,那麼有其他替代方案呢?
答案當然是有的,利用超連結開啟的url是不會被攔截的可以實現這一點。具體做法是結合事件手動觸發機制。下面是 HTML:模擬連結被按下,在新標籤頁開啟頁面,不使用window.open(可能被攔截) 這篇部落格給的一個簡單的例項,這篇文章給出的事件分發機制是針對標準瀏覽器的:
html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>Title</title> <script src="jquery.js"></script> <script type="text/javascript"> $(function() { $("#btn").click(function() { //var a = $('a')[0]; var a = $("<a href='http://www.apple.com' target='_blank'>Apple</a>").get(0); var e = document.createEvent('MouseEvents'); e.initEvent( 'click', true, true ); a.dispatchEvent(e); }); }); </script> </head> <body> <input type="button" value="Go to Apple" id="btn"> </body> </html>
相關推薦
jsp頁面點選button彈出新視窗但會顯示session已過期或者是未登入
其實是因為新開一個瀏覽器視窗(不是標籤頁)是會建立一個新的session id的,瀏覽器的session 管理機制是, A使用者開啟一個視窗第一個訪問伺服器的時候後面會帶一個引數sessionid,而這時候這個session id 是空的, 伺服器通過getsession
如何點選按鈕彈出新視窗,輸入資料後返回並重新整理頁面?(C#程式碼)
namespace ShowModalTest{ /// <summary> /// WebForm1 的摘要說明。 /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI
MFC基於對話方塊上插入MENU選單欄並點選選單彈出新視窗
一、建立基於對話方塊的應用程式框架 1.選擇選單項檔案->新建->專案,彈出“新建專案”對話方塊。 2.直接選擇“MFC應用程式”或左側面板中模板的Visual C++下選擇MFC,中間視窗中選擇MFC應用程式,然後在下面編輯框中鍵入
QT+VS點選按鈕彈出新視窗的實現
1.建立主工程: 新建一個Qt工程作為主工程,取名為newWidgetDemo; 2.建立新視窗: project->右鍵->新增->類->Qt5 Classes->Qt5GuiClass->新增->給新視窗起名為myWidget
jsp頁面點選彈出iframe彈框,並傳值到後臺
function openwindow(id,endDate){ layer.open({ type: 2, title: false,
Selenium 點選button 出現Windows視窗時候Selenium會Hang住!!!
1. 問題描述 使用Selenium webDriver 點選頁面一個按鈕,出現Print windows視窗,這時候 程式會掛住在Click操作上. 解決辦法: 使用執行緒結合AutoItX.jar去關閉windows視窗,這樣Selenium就會繼續執行下面的測試指令碼
關於JSP頁面點選按鈕沒反應,方法沒有執行的檢查
本人前端知識屬於菜鳥級的,不喜勿噴。。前不久,在除錯一個頁面的時候,點選頁面上的一個按鈕,按鈕繫結的事件並沒有執行。好奇怪,以為是方法名寫錯了,檢查一下完全一樣啊。好鬱悶,網上有說是onclick和onClick的區別,但是還是不行啊。經過一番摸索,原來
jsp頁面點選頁籤自動重新整理解決方案
問題:在一個projectInfoMain.jsp的介面定義了多個頁籤,怎麼實現在一個頁籤的jsp頁面儲存完以後點選每個頁籤時自動重新整理改介面。 解決方案:可以在每次點選頁籤時,修改頁籤的url地址,使它再次向伺服器傳送請求,以實現自動重新整理的功能 具體解決方案:
【Unity 3D 5.6版本使用(3)】點選物體彈出視窗顯示狀態
emmm直接看程式碼 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShowWindow : MonoBehavio
【android開發】使用PopupWindow實現頁面點選頂部彈出下拉選單
沒有太多花樣,也沒有很複雜的技術,就是簡單的PopupWindow的使用,可以實現點選彈出一個自定義的view,view裡可以隨便設計,常用的可以放一個listview。 demo中我只是一個點選展示,簡單的使用了fade in out的動畫效果,也沒有精美的圖片資源,
form表單下點選button按鈕提交後頁面重新整理問題解決
button,input type=button按鈕在IE和w3c,firefox瀏覽器區別 當在IE瀏覽器下面時,button標籤按鈕,input標籤type屬性為button的按鈕是一樣的功能,不會對錶單進行任何操作。 但是在W3C瀏覽器,如Firefox下就需要注意了,button標籤按鈕會提
點選連結彈出一個DIV層視窗
做裝置介紹頁面的時候,發現每個裝置點選檢視詳情都需要連結一個新的頁面,這樣比較影響網頁瀏覽的效率和舒適度,所以想用彈窗的形式在當前頁面展示詳情。彈出的視窗要固定在瀏覽器視窗的中間位置,我採用了fixed固定佈局。 <!--HTML--> <body style="backg
點選Button實現開啟新視窗跳轉並且設定視窗大小並居中
1.在template中建立click事件 <div class="glyphicon glyphicon-plus-sign" title="點選我新增專案" @click="createnewproject"></div> 2.在methods中建立方法 m
jsp 頁面中點選刪除按鈕後彈出確認對話方塊
<script type="text/javascript" language="javaScript"> function del(url){ if(confirm("確定要刪除該題目?")){ window.location.href = "delsele
從點選Button到彈出一個MessageBox, 背後發生了什麼
思考一個最簡單的程式行為:我們的Dialog上有一個Button, 當用戶用滑鼠點選這個Button時, 我們彈出一個MessageBox。 這個看似簡單的行為, 誰能說清楚它是如何執行起來的,背後究竟發生了什麼? 下面是我個人嘗試的解答: (1)我們的滑鼠點選事件到達裝置的
jsp 模擬按鈕,點選button,連結到a標籤,是a標籤的地址跳轉
<button id="btn"></button><a href="www.baidu.com" id="link">link</a><script>document.getElementById("btn").
js點選button跳轉到另一個頁面
點選按鈕怎麼跳轉到另外一個頁面呢?我們在網站製作中可能是需要的,因為有時我們需要做這樣的效果,尤其是將按鈕做成一個圖片,而點選圖片要跳轉到新的頁面時,怎麼做到呢? 這樣的效果可以:onclick="window.location='新頁面'" 來實現。 1.在原來的窗體中直接跳轉用 程式碼如下 window
解決IE關閉頁面時連續彈出新視窗的bug
這個問題長期以來一直一個隨機出現,又十分難以重現和定位。幾經努力之後定位到了,在一個帶有複雜的內嵌iframe的頁面,當內嵌的iframe正在渲染的過程中關閉IE 瀏覽器的時候,會比較容易發生這個問題。比較容易猜想的是IE在關閉iframe的時候出現了某些問題。猜測是幾個iframe相互有通過top的指令碼呼
安卓-通過點選Button跳轉不同的頁面。
最近在做一個安卓前端,剛開始接觸安卓(菜鳥一隻),啥都不懂,就通過記筆記的方法來了解安卓吧。在自己的xml的檔案中定義一個Button。如下:<Button android:id="@+id/btnOne" android
js點選button按鈕跳轉到另一個新頁面
點選按鈕怎麼跳轉到另外一個頁面呢?我們在網站製作中可能是需要的,因為有時我們需要做這樣的效果,尤其是將按鈕做成一個圖片,而點選圖片要跳轉到新的頁面時,怎麼做到呢? 這樣的效果可以:onclick="window.location='新頁面'" 來實現。 1.在原來的窗體中直接跳轉用 程式碼如下 window