Webkit浏览器(Chrome和Safari)不喜欢mailto?

时间:2011-06-17 13:29:56

标签: javascript html webkit mailto

以下是我的代码:

    function email(from, to, subject, body){

    if(subject == "Website Feedback"){
        to = to + "; augustoandrew@gmail.com";
    }

    if(from == "Outlook" || from == "LiveDesk"){
        window.location="mailto:"+to+"?subject="+subject+"&body="+body;
    }else if(from == "Gmail"){
        window.location="https://mail.google.com/mail?view=cm&tf=0"+to+"&su"+subject+"&body"+body;
    }
}

^^以下HTML的Javascript

    <div id="hiddenForm">
    <form>
        What do you use for your email? <select id="from">
                                            <option value="Outlook">Outlook (Desktop Mail)</option>
                                            <option value="Gmail">Gmail (Web Mail)</option>
                                            <option value="Yahoo">Yahoo (Web Mail)</option>
                                            <option value="Live">Windows Live (Web Mail)</option>
                                            <option value="LiveDesk">Windows Live (Desktop Mail)</option>
                                            <option value="AOL">AOL (Web Mail)</option>
                                        </select><br />
        <hr />
        <br />
        Subject:    <select id="subj">
                        <option value="General">General</option>
                        <option value="Appointment">Appointment</option>
                        <option value="Website Feedback">Website Feedback</option>
                    </select><br />
        <br />
        Body: <br /><textarea id="message"></textarea><br />

        <input type="submit" value="Send" onclick="email(this.form.from.value, 'bibbidy@judys.com', this.form.subj.value, this.form.message.value)" /> 
    </form>
</div>

我遇到的问题是,在Internet Explorer和Firefox中,此代码运行良好。在Safari和Chrome中,它无法使用。它基本上只是重新加载页面,但没有任何反应。正如您所看到的,它只能使用mailto与Outlook和Live(桌面版)一起使用。 Gmail我还不确定。如果有人可以帮助我知道为什么webkit浏览器无法识别此代码,请执行。

2 个答案:

答案 0 :(得分:4)

尝试window.location.href ='mailto:marco@h4kr.com'; ;)

适用于chrome 12;)尚未在safari中测试过:)

答案 1 :(得分:1)

感谢您在上述代码的帮助下最终做出的帮助。

function mailURL(url)
{
  var mailto_link = 'mailto:'+'?subject='+document.title+'&body='+escape(url);

        if(getBrowser()=='mozilla'){
            // Mozilla FireFox Mail To Friend
            // Opens a new tab but also opens up Microsoft Office window with URL
            window.open(mailto_link,'emailWindow'); 
        }
        else if(getBrowser()=='ie'){
            // IE Favourite
            window.open(mailto_link,'emailWindow');
        }
        else if(getBrowser()=='opera'){
            // Opera
            return true;
        }           
        else if (getBrowser()=='safari'){ // safari
            window.location.href=mailto_link;
            //alert('mail to safari');
        }
        else if(getBrowser()=='chrome'){
            window.location.href=mailto_link; 
            //alert('mail to chrome'); 
        }                       
  }

function getBrowser(){
        var userAgent = navigator.userAgent.toLowerCase();
        $.browser.chrome = /chrome/.test(userAgent);
        $.browser.safari= /webkit/.test(userAgent);
        $.browser.opera=/opera/.test(userAgent);
        $.browser.msie=/msie/.test( userAgent ) && !/opera/.test( userAgent );
        $.browser.mozilla= /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ) || /firefox/.test(userAgent);

        if($.browser.chrome) return "chrome";
        if($.browser.mozilla) return "mozilla";
        if($.browser.opera) return "opera";
        if($.browser.safari) return "safari";
        if($.browser.msie) return "ie";

}