window.open a.href開啟視窗referer的問題

來源:互聯網
上載者:User

標籤:

window.open a.href開啟視窗referer的問題:

 JSP:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>045index</title><style type="text/css">a {    border: 1px solid blue;
    margin-left: 5px;
}</style></head><body>    <input type="button" value="window.open:_blank" id="btn001">    <input type="button" value="window.open:winopen" id="btn002">    <input type="button" value="window.open:winopen anotherButton" id="btn003">    <input type="button" value="see how many window open" id="btn004">    <input type="button" value="close windows opened" id="btn005">    <!-- a href 開啟的視窗對象不能直接獲得到 -->    <a href="test8.do" target="_blank">a link _blank </a>    <!-- 如果target對象一致,那麼開啟的視窗就是一致的 -->    <a href="test8.do" target="winopen">a link winopen </a>    <a href="test8.do" target="winopen">a link winopen2 </a>    <!-- 使用a的click事件進行新視窗的開啟,調用button的事件 -->    <a id="a001" >a link click _blank </a>    <a href="test8.do" target="winopen" id="a002" >a link click winopen and href </a>    <script type="text/javascript" src="js/jquery-1.11.1.js"></script>    <script type="text/javascript" src="b/js/bootstrap.js"></script>    <script type="text/javascript" src="js/index046.js"></script></body></html>

 

js:

/**1, 用window.open的時候可以得到開啟的視窗對象,可以用來後期關閉; * 2, 用a.href可以開啟新的視窗,但是得不到開啟的視窗對象,後期無法關閉; * 3, window.open/a.href的target設定為一個固定值winopen,反覆開啟的視窗都會是同一個視窗; * 4, chrome中window.open/a.href都會有request.getHeader("referer"); * 5, IE中的window.open沒有referer,a.href會有referer; * 6, 用<a href="test8.do" target="winopen" id="a002" >的方式可以hack一下, *    window.open的方式如果沒有referer,會顯示空頁面,而a.href會開啟同樣的視窗,這個有 *    referer,會顯示正常的內容; */$(function() {    $(‘#btn001‘).click(btn001Click);    $(‘#btn002‘).click(btn002Click);    $(‘#btn003‘).click(btn003Click);    $(‘#btn004‘).click(btn004Click);    $(‘#btn005‘).click(btn005Click);    $(‘#a001‘).click(btn001Click);    $(‘#a002‘).click(btn002Click);});var opens = [];function btn001Click(e) {    // 反覆點擊會開啟新的視窗;    // 用chrome進行開啟,會有request.getHeader("referer")    // 用IE進行開啟,request.getHeader("referer")會是null;    var open = window.open(‘test8.do‘, ‘_blank‘);    // chrome中第一次開啟表單有時無法正確設定title    // IE中可以正常的設定titile    open.document.title=‘a‘;    opens.push(open);    // return false是為了抑制a的預設事件;    return false;}function btn002Click(e) {    // 反覆點擊會開啟同一個視窗    var open = window.open(‘test8.do‘, ‘winopen‘);    // chrome中第一次開啟表單有時無法正確設定title,第二次開啟同一個表單的時候可能會設定正確    // IE中可以正常的設定titile    open.document.title=‘b‘;    // 會在opens數組中重複添加相同的視窗對象;    opens.push(open);}function btn003Click(e) {    // 反覆點擊會開啟同一個視窗,與btn002Click的視窗一致    var open = window.open(‘test8.do‘, ‘winopen‘);    // chrome中第一次開啟表單有時無法正確設定title,第二次開啟同一個表單的時候可能會設定正確    // IE中可以正常的設定titile    open.document.title=‘c‘;    // 會在opens數組中重複添加相同的視窗對象;    opens.push(open);}function btn004Click(e) {    console.log(opens);}function btn005Click(e) {    var i = 0, len = opens.length;    for (i = 0; i < len; i++) {        console.log(i);        // 如果數組中有重複對象,在前面已經關閉了,後面重複關閉不會報異常;        opens[i].close();    }}

 

servlet:

package com.stono.servlet;import java.io.PrintWriter;import javax.servlet.http.HttpServlet;public class TestServlet8 extends HttpServlet {    private static final long serialVersionUID = 1L;    protected void doGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws javax.servlet.ServletException, java.io.IOException {        String referer = req.getHeader("referer");        System.out.println(referer);        if(referer == null){            return ;        }        PrintWriter writer = resp.getWriter();        writer.println("this is from com.stono.servlet.TestServlet8");    };}

 

關注一下:a.href的一個坑:http://www.cnblogs.com/iyangyuan/p/3979957.html

window.open a.href開啟視窗referer的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.