4

我正在为 Google Chrome 开发一个运行良好的扩展程序,但现在停止使用清单的第 2 版。

它给了我以下错误:

Uncaught SyntaxError: Unexpected end of input

popup.js:

chrome.tabs.getSelected(null, function (aba) {
    link = aba.url;
    titulo = aba.title;
    document.getElementById('mensagem').value = link;
});

function GrabIFrameURL(feedDescription) {
    var regex = new RegExp("iframe(?:.*?)src='(.*?)'", 'g');
    var matches = regex.exec(feedDescription);
    var url = '';
    if (matches.length == 2) {
        url = matches[1];
    }
    var quebra = url.split("/");
    return quebra[4];
}

$(document).ready(function () {
    if (localStorage.nome == '' || localStorage.nome == null || localStorage.email == '' || localStorage.email == null) {
        jQuery('#formulario').hide();
        jQuery('#erros').html('Configure seus dados <a href="options.html" target="_blank">aqui</a>');
    }

    jQuery("#resposta").ajaxStart(function () {
        jQuery(this).html("<img src='img/loading.gif'> <b>Sugestão sendo enviada, aguarde...</b>");
    });

    jQuery('#submit').click(function () {

        var nome = localStorage.nome;
        var email = localStorage.email;
        var mensagem = titulo + "\n\n<br><br>" + link;

        jQuery('#formulario').hide();
        jQuery.post('http://blabloo.com.br/naosalvo/mail.php', {
            nome: nome,
            email: email,
            mensagem: mensagem
        },

        function (data, ajaxStart) {
            jQuery('#resposta').html(data);
            console.log(data);
        });
        return false;
    });

    //Listagem de posts
    var bkg = chrome.extension.getBackgroundPage();

    jQuery('#close').click(function () {
        window.close();
    });

    jQuery('#markeall').click(function () {
        bkg.lidoAll();
        $('.naolido').attr('class', 'lido');
    });

    jQuery.each(bkg.getFeed(), function (id, item) {
        if (item.naolido == '1') 
            lidoClass = 'naolido';
        else 
            lidoClass = 'lido';
        var thumb = GrabIFrameURL(item.description);
        $('#feed').append('<li><a id="' + item.id + '" href="' + item.link + '" class="' + lidoClass + '"><img src="' + $.jYoutube(thumb, 'small') + '" class="' + lidoClass + '"/>' + item.title + '</a></li>');
    });

    $('.naolido').click(function (e) {
        e.preventDefault();
        klicked = $(this).attr('id');
        console.log(klicked);
        bkg.setLido(klicked);
        $(this).attr('class', 'lido');
        openLink($(this).attr('href'));
    });

    $('.lido').click(function (e) {
        openLink($(this).attr('href'));
    });

    var openLink = function (link) {
        chrome.tabs.create({
            'url': link,
            'selected': true
        });
        window.close();
    }

});

我认为问题出在 popup.js 的这一部分:

jQuery.each(bkg.getFeed(), function (id, item) {
        if (item.naolido == '1') 
            lidoClass = 'naolido';
        else 
            lidoClass = 'lido';
        var thumb = GrabIFrameURL(item.description);
        $('#feed').append('<li><a id="' + item.id + '" href="' + item.link + '" class="' + lidoClass + '"><img src="' + $.jYoutube(thumb, 'small') + '" class="' + lidoClass + '"/>' + item.title + '</a></li>');
});
4

1 回答 1

1

您的问题实际上出在第 12 和第 20 行的 background.js 中,您''最初将 localStorage.items 设置为,但稍后尝试在其JSON.parse()上运行 a ,但它不是 JSON 数据,因此 JSON.parse 返回Unexpected end of input。而且, JSON.parse 不是您定义的函数,而是本机浏览器函数,因此,它将错误显示为“第 1 行”。

尝试最初将它定义为一个空数组,然后像现在一样“推送”它。

于 2012-09-23T21:39:37.363 回答