Skip to main content

Error using an Iframe in unload with JS and PHP

I have a web page where I want to capture the event when the browser closes, apparently everything works on the other pages I have, but on the page called personal, I have an iframe where it contains a video. At the moment of loading the page with F5 or Ctrl + F the event is not activated, but if I reload with the browser button it detects the event. Configure my JS so that events such as clicking on a link, submitting a form, this event is not activated, but having an iFrame does activate me. Any idea how to solve this? I thank you in advance.

This is my code:

close.js:

var es_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
var es_firefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
if(es_chrome){
            $(document).ready(function(){ 
            var validNavigations = false;


        $(document).bind('keypress', function(e) {
            if (e.keyCode == 116){
             validNavigations = true;
        }
        });
        $("a").bind("click", function() {
            validNavigations = true;
        });
        $("form").bind("submit", function() {
          validNavigations = true;
        });
        $("input[type=submit]").bind("click", function() {
          validNavigations = true;
        }); 
        $(document).keydown(function(e) {
        if (e.keyCode == 65 && e.ctrlKey) {
            validNavigations = true;
        } 
        });
        $(document).keydown(function(e) {
    if (e.keyCode == 65+17 && e.ctrlKey) {
            validNavigations = true;
        }
        });
              $(document).keydown(function (e) {            
              if (e.key=="F5") {
                    validNavigations = true;
              }
              else if (e.key.toUpperCase() == "W" && prevKey == "CONTROL") {                
                    validNavigations = true;
              }
              else if (e.key.toUpperCase() == "R" && prevKey == "CONTROL") {
                    validNavigations = true;
              }
              else if (e.key.toUpperCase() == "F4" && (prevKey == "CONTROL" || prevKey == "CONTROL")) {
                    validNavigations = true;
              }
          }); 
         $(window).on("unload", function() {

          if (!validNavigations) {   
                           alert("SE CERRARA SESION");               
  
            $.ajax({
            url: 'logout.php'
             });         
           }
          
        });
  });
}else if(es_firefox){
    $(document).ready(function(){  
        var validNavigation = false;
        $(document).bind('keypress', function(e) {
            if (e.keyCode == 116){
                validNavigation = true;
            }
        });
        $("a").bind("click", function() {
            validNavigation = true;
        });


        $("form").bind("submit", function() {
          validNavigation = true;
        });
        $("input[type=submit]").bind("click", function() {
          validNavigation = true;
        }); 
        $(document).keydown(function(e) {
        if (e.keyCode == 65 && e.ctrlKey) {
            validNavigation = true;
        }
    });
       
              $(document).keydown(function (e) {            
              if (e.key=="F5") {
                    validNavigation = true;
              }
              else if (e.key.toUpperCase() == "W" && prevKey == "CONTROL") {                
                    validNavigation = true;
              }
              else if (e.key.toUpperCase() == "R" && prevKey == "CONTROL") {
                    validNavigation = true;
              }
              else if (e.key.toUpperCase() == "F4" && (prevKey == "CONTROL" || prevKey == "CONTROL")) {
                    validNavigation = true;
              }
          });
              
        window.onbeforeunload = function() { 
            if (!validNavigation) { 
             $.ajax({
                  type: 'post',
                   url: 'logout.php',
               });            
           }
        };
  });
  }

personal.php:

     <div class="seccion-video-institucional" id="seccion-video-institucional"> 
        <a class="boton-video-institucional" 
        onclick="f_open_modal('https://player.vimeo.com/video/12334232?h=2334222')"></a>
       </div>  

    <div class="modal fade" id="ModalVideo" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" id="close" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">                    
                <div class="embed-responsive embed-responsive-4by3">
                    <iframe id="iframeVideo" class="myFrame embed-responsive-item" src=""></iframe>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" id="close" class="btn btn-secondary" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">Cerrar</span>
                </button>
            </div>
        </div>
    </div>
</div>

<script src="js/jquery-3.5.1.min.js"></script>

    <script src="js/close.js"></script> 

<script>

    function f_open_modal(video){
        $('#ModalVideo').modal("show");
        call_modal(video);
                 var validNavigations = true;

    }

    function call_modal(v_video){
        var videoSrc= v_video;
        var iframe=$('#iframeVideo');
        iframe.attr("src", videoSrc+"?autoplay=0"); 
                       var  validNavigations = true;

    }   

    $('#ModalVideo').on('hidden.bs.modal', function (e) {
        var iframe=$('#iframeVideo');
        iframe.removeAttr("src");
                       var  validNavigations = true;

    });
</script>


source https://stackoverflow.com/questions/69003751/error-using-an-iframe-in-unload-with-js-and-php

Comments

Popular posts from this blog

Prop `className` did not match in next js app

I have written a sample code ( Github Link here ). this is a simple next js app, but giving me error when I refresh the page. This seems to be the common problem and I tried the fix provided in the internet but does not seem to fix my issue. The error is Warning: Prop className did not match. Server: "MuiBox-root MuiBox-root-1" Client: "MuiBox-root MuiBox-root-2". Did changes for _document.js, modified _app.js as mentioned in official website and solutions in stackoverflow. but nothing seems to work. Could someone take a look and help me whats wrong with the code? Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console