捕获网址,浏览器和浏览器版本,并将其放入电子邮件正文中

时间:2014-01-15 18:25:41

标签: javascript email

我有一个网页,上面有成千上万页,随着技术和设备的进步,各种各样的东西都会出错(www.toilette-humor.com)。我需要在每个页面上添加一个链接,允许用户“报告问题”。所以我需要捕获以下信息并将其发送给我:

  • 他们在
  • 上看到了什么网址
  • 他们使用的浏览器和版本

如果可能的话......

  • 他们正在使用什么操作系统
  • 他们正在使用什么平台/设备

我在这里找到了一些代码来回答捕获URL并将其放在电子邮件正文中的第一个问题,我发现了一些用于捕获浏览器和版本的其他代码,但该代码不会将其添加到一封电邮。

我完全不知道如何编写Javascript。所以我问你们所有人,我如何结合这两个脚本,或者是否有更好的解决方案。

脚本一(捕获URL并将其添加到电子邮件正文中),请访问:How to write in 'mailto' body link to current page

<head>
<script>
    function SendLinkByMail(href) {
        var subject= "Report a Problem";
        var body = "There is a problem with this webpage:\r\n\r\n<";
        body += window.location.href;
        body += ">";
        var uri = "mailto:?subject=";
        uri += encodeURIComponent(subject);
        uri += "&body=";
        uri += encodeURIComponent(body);
        window.location.href = uri;
    }
</script>
</head>

<body>
    <p><a href="javascript:(function()%7BSendLinkByMail()%3B%7D)()%3B">Email link to this page</a></p>
</body>

脚本二(捕获浏览器和版本)在这里找到:How can you detect the version of a browser?

<script>
    navigator.sayswho= (function(){
        var ua= navigator.userAgent, tem, 
        M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i) || [];
        if(/trident/i.test(M[1])){
            tem=  /\brv[ :]+(\d+(\.\d+)?)/g.exec(ua) || [];
            return 'IE '+(tem[1] || '');
        }
        M= M[2]? [M[1], M[2]]:[navigator.appName, navigator.appVersion, '-?'];
        if((tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
        return M.join(' ');
    })();
</script>

提前感谢大家的时间和知识。

1 个答案:

答案 0 :(得分:0)

作为一个FYI,您不应该使用javascript链接,但我们会在一秒钟内处理。

如果要将userAgent添加到正文中,可以执行以下操作:

function SendLinkByMail(href) {
    var subject= "Report a Problem";
    var body = "There is a problem with this webpage:\r\n\r\n<";
    body += window.location.href;
    body += ">";
    body += navigator.userAgent;
    var uri = "mailto:?subject=";
    uri += encodeURIComponent(subject);
    uri += "&body=";
    uri += encodeURIComponent(body);
    window.location.href = uri;
}

如果您想使用那个奇怪的功能,您可以将navigator.userAgent行更改为navigator.sayswho()

此外,您应该使用事件监听器附加操作:

<body>
    <p class="send-email">Email link to this page</p>
    <script>
        var send = document.getElementsByClassName('send-email')[0];
        send.attachEvent? send.attachEvent('click', SendLinkByMail) : send.addEventListener('click', SendLinkByMail);
    </script>
</body>

但这仍然是发送电子邮件的一种泄密方式,因为如果用户使用网络邮件客户端mailto:链接,如果没有用户的额外设置工作,则不太可能工作。