簡體   English   中英

在新窗口中打開div-單擊按鈕

[英]Open a div in new window - on-click of button

伙計們,我正在嘗試在新窗口中打開一個div,並嘗試了window.open ,它按預期工作。

HTML:

<div id="pass">pass this to the new window</div>
<a href="#" onclick="openWin()">click</a>

JS:

  function openWin() {
    var divText = document.getElementById("pass").outerHTML;
    var myWindow = window.open('', '', 'width=200,height=100');
    var doc = myWindow.document;
    doc.open();
    doc.write(divText);
    doc.close();
  }

http://jsfiddle.net/KZYJU/

問題 :如果該窗口已經打開,則當我再次單擊該按鈕時,它不應再次打開新窗口。 用戶應該只能看到一個窗口。 就我而言,如果我單擊按鈕10次,則會打開10個窗口。

伙計們請協助我。

您可以這樣做:

  var popup;

  function openWin() {
    if (popup && !popup.closed) {
      popup.focus();
      /* or do something else, e.g. close the popup or alert a warning */
    } else {
      var divText = document.getElementById("pass").outerHTML;
      popup = window.open('', '', 'width=200,height=100');
      var doc = popup.document;
      doc.open();
      doc.write(divText);
      doc.close();
    }
  }

這將檢查彈出窗口是否打開,如果打開,則將其聚焦。

演示版

只是玩Boolean標志。 首次單擊時將其設為true。 並以此來限制它。

 var flag = false; function openWin() { if(!flag) { var divText = document.getElementById("pass").outerHTML; var myWindow = window.open('', '', 'width=200,height=100'); var doc = myWindow.document; doc.open(); doc.write(divText); doc.close(); flag = true } } 
 <div id="pass">pass this to the new window</div> <a href="#" onclick="openWin()">click</a> 

由於您可以在新窗口中編寫一些腳本,因此可以使用Cookie在其中存儲類似標志的數據,以便您知道該窗口當前處於打開狀態。

在主頁上,首先將標志(我將其命名為windowOpen)設置為false,並在每次單擊鏈接時進行檢查。 如果為假,則打開新窗口。 否則,什么都不做。

在隨后的窗口中,將標志設置為在打開時為true,在關閉時將其設置為false。

在對window.open的調用中設置一個窗口名稱

window.open('', 'popupWindowName', 'width=200,height=100');

windowName是一個DOMString,它指定將指定資源加載到其中的瀏覽上下文(窗口或選項卡)的名稱; 如果名稱不表示現有上下文,則創建一個新窗口,並為其指定由windowName指定的名稱。 然后,通過將其指定為或元素的目標屬性,可以將該名稱用作鏈接和表單的目標。 該名稱不應包含空格。 請記住,這將不會用作窗口顯示的標題。 如果字符串為空,則瀏覽器每次都會創建一個新窗口(將字符串替換為NULL時,此行為不起作用)。

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM