Mailto链接正在导航到不同的URL

时间:2014-07-26 20:45:54

标签: javascript jquery html email mailto

我正在使用MVC 5,当我尝试点击<a href="mailto:some@email.com"></a>时,所有浏览器都会尝试导航www.website.com/some/route/id/mailto:some@email.com

我不明白这种行为,也无法找到有关此问题的人。

HTML:

<section>
    <ul>
        <li>
            <a href="mailto:some@email.com">
                <div class="social-icon mailto"></div>
            </a>
        </li>
    </ul>
</section>

也许这是干扰:

app.click_handler = function (e) {

        if (!GLOBALS.SUPPORT.PUSH_STATE)
            return true;

        var url = $(this).attr('href'),
            title = $(this).attr('title');

        if (url.match(/:\/\//)) {
            return true;
        }

        if (url === '#') {
            return false;
        }

        e.preventDefault();

        GLOBALS.VALUES.CURRENT_ELEMENT = $(this);

        History.pushState({}, title, url);
    };

$(document).on('click', 'a', app.click_handler);

1 个答案:

答案 0 :(得分:1)

该代码似乎会干扰链接,但允许其中包含://的代码或仅仅#的代码。

所以你也可以添加另一张支票

if (url.match(/^mailto:/)){
 return true;
}

所以它变成了

app.click_handler = function (e) {

    if (!GLOBALS.SUPPORT.PUSH_STATE)
        return true;

    var url = $(this).attr('href'),
        title = $(this).attr('title');

    if (url.match(/:\/\//)) {
        return true;
    }

    if (url.match(/^mailto:/)) {
        return true;
    }

    if (url === '#') {
        return false;
    }

    e.preventDefault();

    GLOBALS.VALUES.CURRENT_ELEMENT = $(this);

    History.pushState({}, title, url);
};

$(document).on('click', 'a', app.click_handler);