JQuery仅在Firefox中的Alert之后执行

时间:2014-05-06 07:24:16

标签: javascript jquery html ajax firefox

我正在尝试使用'changeRating()'方法在我的数据库中添加'like',当用户点击本地按钮,类似按钮或Twitter按钮时。

但是,当用户在Firefox中点击这些按钮时,我的'喜欢'不会增加,在Chrome中一切正常。在Firefox中,它仅在激活JQuery开头的警告时有效吗?

jQuery(document).ready(function () {
        //alert('test'); (when this is activated it works)

        $(".fb-like").mouseup(function () {

            var vraagIdToUpdate = $(".vraagid").attr("value");

            if (vraagIdToUpdate != '') {
                changeRating(vraagIdToUpdate);
            }
        });

        FB.Event.subscribe('edge.create',
        function (response) {
            var vraagIdToUpdate = $(".vraagid").attr("value");

            if (vraagIdToUpdate != '') {
                changeRating(vraagIdToUpdate);
            }
        });

       $(".twitter-share-button").mouseup(function () {
            var vraagIdToUpdate = $(".vraagid").attr("value");

            if (vraagIdToUpdate != '') {
                changeRating(vraagIdToUpdate);
            }
        });

        twttr.events.bind('click', function () {
            var vraagIdToUpdate = $(".vraagid").attr("value");

            if (vraagIdToUpdate != '') {
                changeRating(vraagIdToUpdate);
            }
        });

        $("#stemknop").click(function () {
            //voeg event handler toe aan de click-functie op de link (die als className twitter-share-button heeft meegekregen)
            var vraagIdToUpdate = $(".vraagid").attr("value");
            //alert('gelukt');
            $(this).css({ 'opacity': '0.4' });

            if (vraagIdToUpdate != '') {
                changeRating(vraagIdToUpdate);
            }
        });

        function changeRating(vraagId) {
            //Maak een JSON object aan met dezelfde property-name als ons Model classe
            var shareModel = { vraagID: vraagId };

            $.post("/api/ShareAPI/ChangeNumberOfShares", shareModel).success(function (result) { $('.aantalStemmen').text(result.newAantalShares) });
        }
    });

我知道当一些代码需要特定的东西时,有可能加载太快或者不存在的东西...... alert()会导致我的代码“等待”,因此它确实有效。但我似乎无法找到导致此问题的代码。

编辑:我的firefox控制台声明如下:

  

ReferenceError:FB未定义Vraag:143 ReferenceError:FB不是   定义Vraag:setUserData()wordt的247 Gebruik van getUserData()   niet meer ondersteund。 Gebruik in plaats daarvan WeakMap of   element.dataset。 requestNotifier.js:64“无效的应用ID:必须是   表示应用程序ID的数字或数字字符串。“sdk.js:53   “尚未创建”fb-root“div,自动创建”sdk.js:53“No   回调传递给ApiClient“sdk.js:53错误:容器不是   定义格式+ nl,默认+ nl,ui + nl,corechart + nl.I.js:130 Gebruik van   setUserData()的getUserData()wordt niet meer ondersteund。 Gebruik in   plaats daarvan element.dataset的弱地图。 requestNotifier.js:64   Gebruik van getPreventDefault()wordt niet meer ondersteund。 Gebruik   在plaats daarvan defaultPrevented。 jquery-1.8.2.js:3260错误:   容器未定义

2 个答案:

答案 0 :(得分:0)

将您的发布请求更改为ajax并使请求同步: 例如:

$.ajax({
   type: 'POST',
   url: "/api/ShareAPI/ChangeNumberOfShares",
   data: shareModel,
   success: function(result) {
                  $('.aantalStemmen').text(result.newAantalShares);
              },
   async:false
});

答案 1 :(得分:0)

编辑:尝试查看答案Is there a way to detect if the Facebook Javascript SDK loaded successfully?

试试这个:

jQuery(document).ready(function () {
        //alert('test'); (when this is activated it works)

        FB.Event.subscribe('edge.create', function (response) {
            var vraagIdToUpdate = $(".vraagid").attr("value");

            if (vraagIdToUpdate != '') {
                changeRating(vraagIdToUpdate);
            }

            $(".fb-like").mouseup(function () {

                var vraagIdToUpdate = $(".vraagid").attr("value");

                if (vraagIdToUpdate != '') {
                    changeRating(vraagIdToUpdate);
                }
            });

            $(".twitter-share-button").mouseup(function () {
                var vraagIdToUpdate = $(".vraagid").attr("value");

                if (vraagIdToUpdate != '') {
                    changeRating(vraagIdToUpdate);
                }
            });

            twttr.events.bind('click', function () {
                var vraagIdToUpdate = $(".vraagid").attr("value");

                if (vraagIdToUpdate != '') {
                    changeRating(vraagIdToUpdate);
                }
            });

            $("#stemknop").click(function () {
                //voeg event handler toe aan de click-functie op de link (die als className twitter-share-button heeft meegekregen)
                var vraagIdToUpdate = $(".vraagid").attr("value");
                //alert('gelukt');
                $(this).css({ 'opacity': '0.4' });

                if (vraagIdToUpdate != '') {
                    changeRating(vraagIdToUpdate);
                }
            });

            function changeRating(vraagId) {
                //Maak een JSON object aan met dezelfde property-name als ons Model classe
                var shareModel = { vraagID: vraagId };

                $.post("/api/ShareAPI/ChangeNumberOfShares", shareModel).success(function (result) { $('.aantalStemmen').text(result.newAantalShares) });
            }
        });
    });