Ad Block Plus阻止jQuery脚本?

时间:2014-05-09 16:37:57

标签: javascript jquery adblock

我有一个脚本从我的CMS中提取数据,然后允许一个人投票。该脚本工作正常。但是,我在Firefox中安装了Ad Block Plus插件。如果启用此选项可阻止脚本正确提交表单。它似乎在前端正确提交但从未在后端注册。

为什么Ad Block Plus会阻止我的广告与广告无关?

脚本如下:

$(document).ready(function () {

    var Engine = {
        ui: {
            buildChart: function() {

                if ($("#pieChart").size() === 0) {
                    return;
                }

                var pieChartData = [],
                    totalVotes = 0,
                    $dataItems = $("ul.key li");

                // grab total votes
                $dataItems.each(function (index, item) {
                    totalVotes += parseInt($(item).data('votes'));
                });

                // iterate through items to draw pie chart
                // and populate % in dom
                $dataItems.each(function (index, item) {
                    var votes = parseInt($(item).data('votes')),
                        votePercentage = votes / totalVotes * 100,
                        roundedPrecentage = Math.round(votePercentage * 10) / 10;

                    $(this).find(".vote-percentage").text(roundedPrecentage);

                    pieChartData.push({
                        value: roundedPrecentage,
                        color: $(item).data('color')
                    });
                });

                var ctx = $("#pieChart").get(0).getContext("2d");
                var myNewChart = new Chart(ctx).Pie(pieChartData, {});

            }, // buildChart

            pollSubmit: function() {

                if ($("#pollAnswers").size() === 0) {
                    return;
                }

                var $form = $("#pollAnswers"),
                    $radioOptions = $form.find("input[type='radio']"),
                    $existingDataWrapper = $(".web-app-item-data"),
                    $webAppItemName = $existingDataWrapper.data("item-name"),
                    $formButton = $form.find("button"),
                    bcField_1 = "CAT_Custom_1",
                    bcField_2 = "CAT_Custom_2",
                    bcField_3 = "CAT_Custom_3",
                    $formSubmitData = "";

                $radioOptions.on("change", function() {

                    $formButton.removeAttr("disabled"); // enable button

                    var chosenField = $(this).data("field"), // gather value
                        answer_1 = parseInt($existingDataWrapper.data("answer-1")),
                        answer_2 = parseInt($existingDataWrapper.data("answer-2")),
                        answer_3 = parseInt($existingDataWrapper.data("answer-3"));

                    if (chosenField == bcField_1) {
                        answer_1 = answer_1 + 1;
                        $formSubmitData = {
                            ItemName: $webAppItemName,
                            CAT_Custom_1: answer_1,
                            CAT_Custom_2: answer_2,
                            CAT_Custom_3: answer_3
                        };
                    }

                    if (chosenField == bcField_2) {
                        answer_2 = answer_2 + 1;
                        $formSubmitData = {
                            ItemName: $webAppItemName,
                            CAT_Custom_1: answer_1,
                            CAT_Custom_2: answer_2,
                            CAT_Custom_3: answer_3
                        };
                    }

                    if (chosenField == bcField_3) {
                        answer_3 = answer_3 + 1;
                        $formSubmitData = {
                            ItemName: $webAppItemName,
                            CAT_Custom_1: answer_1,
                            CAT_Custom_2: answer_2,
                            CAT_Custom_3: answer_3
                        };
                    }

                    prepForm($formSubmitData);

                });


                function prepForm(formSubmitData) {

                    $formButton.click(function(e) {
                        e.preventDefault();
                        logAnonUserIn("anon", "anon", formSubmitData); // log user in

                    }); // submit

                } // prepForm

                function logAnonUserIn(username, password, formSubmitData) {
                    $.ajax({
                        type: 'POST',
                        url: '/ZoneProcess.aspx?ZoneID=-1&Username=' + username + '&Password=' + password,
                        async: true,
                        beforeSend: function () {},
                        success: function () {},
                        complete: function () {
                            fireForm(formSubmitData);
                        }
                    });
                } // logAnonUserIn

                function fireForm(formSubmitData) {
                    // submit the form

                    var url = "/CustomContentProcess.aspx?A=EditSave&CCID=13998&OID=3931634&OTYPE=35";

                    $.ajax({
                        type: 'POST',
                        url: url,
                        data: formSubmitData,
                        async: true,
                        success: function () {},
                        error: function () {},
                        complete: function () {
                            window.location = "/";
                        }
                    });
                }

            } // pollSubmit

        } // end ui

    };

    Engine.ui.buildChart();
    Engine.ui.pollSubmit();

});

1 个答案:

答案 0 :(得分:1)

事实证明,easylist包含这个过滤器:

.aspx?zoneid=

这就是我的脚本被阻止的原因。

我被告知我可以尝试这个例外过滤器:

@@||example.com/ZoneProcess.aspx?*$xmlhttprequest

我还可以要求easylist添加例外。

Answer comes from Ad Block Plus Forums.