簡體   English   中英

當用戶僅單擊頁面上的任意位置一次時,打開新選項卡

[英]open new tab when user click anywhere on the page only once

我需要一些幫助,我想知道當用戶僅單擊一次頁面上的任何位置時如何打開新選項卡。 這是給我的博客作者的。 我有以下代碼:

 <script type="text/javascript"> var popup = function() { window.open ("http://example.com", "Window","status=1,toolbar=1,width=500,height=300,resizable=yes"); } </script> <body onclick="popup()"> <h1>Click anywhere!</h1> </body> 

但是不起作用,因為每次單擊都會打開一個新選項卡,我嘗試使用Cookie編寫此代碼

 <SCRIPT LANGUAGE="JavaScript"> <!-- Begin var expDays = 1; // number of days the cookie should last var page = "only-popup-once.html"; var windowprops = "width=300,height=200,location=no,toolbar=no,menubar=no,scrollbars=no,resizable=yes"; function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function DeleteCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 1); var cval = GetCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } var exp = new Date(); exp.setTime(exp.getTime() + (expDays*24*60*60*1000)); function amt(){ var count = GetCookie('count') if(count == null) { SetCookie('count','1') return 1 } else { var newcount = parseInt(count) + 1; DeleteCookie('count') SetCookie('count',newcount,exp) return count } } function getCookieVal(offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function checkCount() { var count = GetCookie('count'); if (count == null) { count=1; SetCookie('count', count, exp); window.open(page, "", windowprops); } else { count++; SetCookie('count', count, exp); } } // End --> </script> 

但由於瀏覽器阻止了彈出窗口,因此無法正常工作。

當用戶單擊任意位置時,powvideo或animeflv之類的某些網站都有腳本,該腳本會自動打開一個新標簽,例如data:text / html; base64,XXXXX

謝謝。

您只需要一個可以檢查的標志,以查看是否仍然可以打開彈出窗口。

 var openPage = true; function popup() { if(openPage){ window.open ("http://example.com","Window","status=1,toolbar=1,width=500,height=300,resizable=yes"); openPage = false; } } 
 <body onclick="popup()"> <h1>Click anywhere!</h1> </body> 

<body class="index">

  <h1>Click anywhere!</h1>

  <script type="text/javascript">

    var homepage = document.querySelector('body.index');

    var popUp = function(e) {
      window.open ("http://example.com", "Window","status=1,toolbar=1,width=500,height=300,resizable=yes");
      homepage.removeEventListener('click', popUp, false);
    }

    homepage.addEventListener('click', popUp, false);

  </script>


</body>
<script>
var clickCounter = 0;

function clickMagnet(e){
  if( clickCounter == 0 ) {
    // open window code here
  }
  clickCounter++;
}
</script>
<body onclick="clickMagnet">

您需要一個變量來跟蹤點擊次數。 如果大於0,則不執行任何操作。 在我的示例中,我將一個函數綁定到主體,該主體由click事件觸發。 clickCounter變量可跟蹤點擊次數。 將您的代碼放在if條件中,其中conditionCheck == 0時打開窗口,您應該會很好。

暫無
暫無

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

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