jQuery .load()使用Unicode字符进行混乱

时间:2017-09-27 21:50:39

标签: javascript jquery ajax unicode

我已经在我的网站上设置了一个简单的AJAX页面加载脚本,到目前为止一切正常,除了加载新内容时<title>中的Unicode字符搞砸了。

我的jQuery设置如下:

jQuery(document).ready(function ($) {
    "use strict";

    var main = $("main");

    menuLinks.click(function () {
        var href = $(this).attr("href"),
            ajaxLoad = function (html) {
                document.title = html.match(/<title>(.*?)<\/title>/)[1].trim();
                main.fadeIn('slow');
            };

        history.pushState(null, null, href);
        main.fadeOut('slow', function () {
            main.load(href + ' main>*', ajaxLoad);
        });
        return false;
    });
});

我的<title>中包含破折号,当加载页面标题时,它们最终为&#8211;。我的印象是,这必须使用不同的编码来处理jQuery和HTML,但我不确定如何解决问题。

2 个答案:

答案 0 :(得分:0)

jQuery(document).ready(function ($) {
    "use strict";

    var main = $("main");

    menuLinks.click(function () {
        var href = $(this).attr("href"),
            ajaxLoad = function (html) {
                document.title = html.match(/<title>(.*?)<\/title>/)[1].text().trim();
                main.fadeIn('slow');
            };

        history.pushState(null, null, href);
        main.fadeOut('slow', function () {
            main.load(href + ' main>*', ajaxLoad);
        });
        return false;
    });
});

答案 1 :(得分:0)

我最终使用的是document.title = $(html).filter('title').text();而不是document.title = html.match(/<title>(.*?)<\/title>/)[1].trim();,它似乎解决了unicode字符问题。