Open the href mailto link in new tab / window

后端 未结 8 780
臣服心动
臣服心动 2020-12-05 09:56

I have an image which when click, I want to link to a mailto:

 
        

        
相关标签:
8条回答
  • 2020-12-05 10:43

    I know this is an old question, but this thread had the best set of answers if found. I modified Marcos's Answer above to also close the blank tab that is created if the client has an external mail handler

    reference answer

    JS (w\ jQuery for event handlers)

    $(document).on('click', 'a[href^=mailto]', function(e) {
      var checkClose, checkLoaded, event, href, i, len, loadEvents, results, t, wndw;
      e.preventDefault();
      href = this.href;
      wndw = window.open(href, 'mail');
      checkClose = function() {
        console.log('checkClose');
        try {
          wndw.location.href;
          return wndw.close();
        } catch (error) {
          return console.log('webmail');
        }
      };
      t = setTimeout(checkClose, 5000);
      try {
        checkLoaded = function() {
          console.log('loaded');
          clearTimeout(t);
          return t = setTimeout(checkClose, 2000);
        };
        wndw.onload = checkLoaded;
        loadEvents = ["DomContentLoaded", "load", "beforeunload", "unload"];
        results = [];
        for (i = 0, len = loadEvents.length; i < len; i++) {
          event = loadEvents[i];
          results.push(wndw.addEventListener(event, checkLoaded));
        }
        return results;
      } catch (error) {
        return checkLoaded();
      }
    });
    

    jsfiddle

    0 讨论(0)
  • 2020-12-05 10:43

    Variant 1 (JavaScript):

    <script>
    // Open mailto links in a new tab
    function mailto(email, subject, body) {
        var url;
        url = 'mailto:' + email;
        url += '?subject=' + subject;
        url += '&body=' + body;
        window.open(url);
    }
    </script>
    
    <a href="#" onclick="mailto('test@gmail.com', 'Subject', 'Body');event.preventDefault()">test@gmail.com</a>
    

    Variant 2 (JavaScript):

    <script>
    // Open mailto links in a new tab
    function mailto(th) {
        var url = th.getAttribute('href');
        window.open(url);
    }
    </script>
    
    <a href="mailto:test@gmail.com?subject=Subject&body=Body" onclick="mailto(this);event.preventDefault()">test@gmail.com</a>
    

    Variant 3 (jQuery):

    <script>
    // Open mailto links in a new tab
    $('#mailto').click(function (e) {
        e.preventDefault();
        var url = $(this).attr('href');
        window.open(url);
    });
    </script>
    
    <a href="mailto:test@gmail.com?subject=Subject&body=Body" id="mailto">test@gmail.com</a>
    

    Variant 4 (jQuery):

    <script>
    // Open mailto links in a new tab
    $("a[href^='mailto:']").click(function(e) {
        e.preventDefault();
        var href = $(this).attr('href');
        var target = $(this).attr('target');
        window.open(href, target ? target : '_self');
    });
    </script>
    
    <a href="mailto:test@gmail.com?subject=Subject&body=Body" target="_blank">test@gmail.com</a>
    

    HTML target Attribute: https://www.w3schools.com/tags/att_a_target.asp

    0 讨论(0)
提交回复
热议问题