在移动浏览器上使用jQuery sparkle插件

时间:2016-01-29 10:24:08

标签: jquery firefox javascript-events mobile-browser

我正在开发一个使用visjs.org时间轴的webapp /网站,用于在传单地图上显示历史地图。我使用了jQuery Sparkle插件来处理单击和双击,因为单击会将选定的历史地图作为顶层,而双击则会将其设置为基础层。

这一切都像所有桌面浏览器上的魅力,但移动浏览器让我头疼。 Chrome移动版和Opera移动版工作正常(点击和双击按预期工作),但Firefox移动版,Android原生浏览器和IOS浏览器不会注册任何点击或点击事件。

它可能与闪光插件有关,但我无法弄清楚如何调整它。

编辑:下面是我的主页以及Sparkle插件的代码

var amountclicked = 0;
var baseselected = 0;
$(".vis-item").bind('click tap', function() {
    amountclicked++;
});
$(".vis-item").bind('singleclick', function() {
    var isBase = this.classList.contains("vis-item-base");
    if (isBase) {
        alert("first disable this layer as baselayer");
    } else {
        var datarray = [];
        $.each(timeline.itemsData._data, function(key, value) {
            datarray.push(value);
        });

        var selectid;
        var selecteditem = this.firstChild;

        for (j = 0; j < datarray.length; j++) {
            var currdataobj = datarray[j];
            var cc1 = currdataobj.content;
            var cc2 = selecteditem.innerHTML
            var currdatacontent = cc1.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
            var selecteditemcontent = cc2.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();

            if (currdatacontent == selecteditemcontent) {
                selectid = currdataobj.id;
                // if previous selected was also basemap
                var prevhistcont;
                var prevselected;
                timeline.setSelection(selectid)

                if (previoushistorical != undefined) {
                    previoushistorical.classList.add("vis-item-base");
                }

                var selecteditemID = timeline.getSelection();
                var selectedYear = data[selecteditemID - 1].start.getFullYear();
                var ind, leng;
                leng = layers.length;

                for (ind = 0; ind < leng; ++ind) {
                    var tempitem = layers[ind];
                    if (tempitem.properties.year != selectedYear.toString()) {
                        if (openmap.hasLayer(overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label])) {
                            if (previoushistorical != undefined) {
                                var innertextbase = $(".vis-item-base")[0].innerText;
                                var curlab = layers[ind].properties.label + "-" + layers[ind].properties.year;
                                if (innertextbase.search(curlab) != 0) {
                                    var isBase = this.classList.contains("vis-item-base");
                                    var overlaylayer = $(".leaflet-layer:eq( 1 )").find('.leaflet-tile-container:eq( 1 )').find('.leaflet-tile-loaded');
                                    var selectindex = ind;

                                    overlaylayer.animate({
                                        opacity: 0
                                    }, 20, function() {
                                        function deletelayer() {
                                            openmap.removeLayer(overlayMaps[layers[selectindex].properties.year + " - " + layers[selectindex].properties.label]);
                                    };
                                    window.setTimeout(deletelayer, 1000); // 5 seconds
                                    });
                                            updateMarkers(selectedYear);
                                        }
                                    } else {
                                        var isBase = this.classList.contains("vis-item-base");
                                        var overlaylayer = $(".leaflet-layer:eq( 1 )").find('.leaflet-tile-container:eq( 1 )').find('.leaflet-tile-loaded');
                                        var selectindex = ind;
                                        overlaylayer.animate({
                                            opacity: 0
                                        }, 20, function() {
                                            function deletelayer() {
                                                openmap.removeLayer(overlayMaps[layers[selectindex].properties.year + " - " + layers[selectindex].properties.label]);
                                            };
                                            window.setTimeout(deletelayer, 1000); // 5 seconds
                                        });
                                        updateMarkers(selectedYear);
                                    }
                                }
                            } else {
                                openmap.addLayer(overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label]);
                                overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label].bringToFront();
                                updateOpacity($("#slide")[0].value);
                                var layertitle = "<h4>" + layers[ind].properties.label + "-" + layers[ind].properties.year + "</h4>";
                                var layertext = "";
                                var draaiboeklink = "";
                                if (layers[ind].properties.text != undefined) {
                                    layertext = layers[ind].properties.text;
                                }
                                if (layers[ind].properties.draaiboek != undefined) {
                                    if (layers[ind].properties.draaiboek == "ja") {
                                        var temp = buildUrl('draaiboek.html', 'title', layers[ind].properties.label.toLowerCase());
                                        var t2 = temp.replace(" & ", "en");
                                        draaiboeklink = "</br><a target='_blank' href='" + t2 + "'>Bekijk de originele kaart</a>";
                                    }
                                }
                                $("#mapinfo")[0].innerHTML = layertitle + layertext + draaiboeklink + " ";
                            }
                        }
                    }
                };
                amountclicked = 0;
            }
        });
        var previoushistorical;
        $(".vis-item").bind('lastclick', function() {
            if (amountclicked > 1) {
                //alert("doubleclick performed");
                var isBase = this.classList.contains("vis-item-base");
                if (isBase) {
                    this.classList.remove("vis-item-base");
                    alert("set standard back");
                    var datarray = [];
                    $.each(timeline.itemsData._data, function(key, value) {
                        datarray.push(value);
                    });
                    var selectid;
                    var selecteditem = this.firstChild;
                    for (j = 0; j < datarray.length; j++) {
                        var currdataobj = datarray[j];
                        var cc1 = currdataobj.content;
                        var cc2 = selecteditem.innerHTML;
                        var currdatacontent = cc1.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
                        var selecteditemcontent = cc2.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
                        if (currdatacontent == selecteditemcontent) {
                            selectid = currdataobj.id;
                            var selectedYear = data[selectid - 1].start.getFullYear();
                            var ind, leng;
                            leng = layers.length;
                            for (ind = 0; ind < leng; ++ind) {
                                var tempitem = layers[ind];
                                if (tempitem.properties.year == selectedYear.toString()) {
                                    var selectindex = ind;
                                    openmap.removeLayer(overlayMaps[layers[selectindex].properties.year + " - " + layers[selectindex].properties.label]);
                                }
                            }
                        }
                    };
                    openmap.addLayer(basec);
                    basec.bringToBack();
                    baseselected--;
                    previoushistorical = undefined;
                } else {
                    if (baseselected < 1) {
                        previoushistorical = this;
                        this.classList.add("vis-item-base");
                        if (this.classList.contains("vis-selected")) {
                            this.classList.remove("vis-selected");
                        }
                        alert("put as base");
                        openmap.removeLayer(basec);
                        var datarray = [];
                        $.each(timeline.itemsData._data, function(key, value) {
                            datarray.push(value);
                        });
                        var selectid;
                        var selecteditem = this.firstChild;
                        for (j = 0; j < datarray.length; j++) {
                            var currdataobj = datarray[j];
                            var cc1 = currdataobj.content;
                            var cc2 = selecteditem.innerHTML;
                            var currdatacontent = cc1.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
                            var selecteditemcontent = cc2.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
                            if (currdatacontent == selecteditemcontent) {
                                selectid = currdataobj.id;
                                var selectedYear = data[selectid - 1].start.getFullYear();
                                var ind, leng;
                                leng = layers.length;
                                for (ind = 0; ind < leng; ++ind) {
                                    var tempitem = layers[ind];
                                    if (tempitem.properties.year == selectedYear.toString()) {
                                        openmap.addLayer(overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label]);
                                        overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label].bringToBack();
                                        overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label].setZIndex(-2);
                                    }
                                }
                            }
                        };
                        baseselected++;
                    } else if (baseselected == 1) {
                        alert("another historical baselayer");
                        var datarray = [];
                        $.each(timeline.itemsData._data, function(key, value) {
                            datarray.push(value);
                        });
                        var tempprev = previoushistorical;
                        tempprev.classList.remove("vis-item-base");
                        //timeline.itemSet.setSelection(888888);
                        var prevselectid;
                        var prevselecteditem = tempprev.firstChild;
                        for (j = 0; j < datarray.length; j++) {
                            var currdataobj = datarray[j];
                            var cc1 = currdataobj.content;
                            var cc2 = prevselecteditem.innerHTML;
                            var currdatacontent = cc1.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
                            var selecteditemcontent = cc2.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
                            if (currdatacontent == selecteditemcontent) {
                                prevselectid = currdataobj.id;
                                var selectedYear = data[prevselectid - 1].start.getFullYear();
                                var ind, leng;
                                leng = layers.length;
                                for (ind = 0; ind < leng; ++ind) {
                                    var tempitem = layers[ind];
                                    if (tempitem.properties.year == selectedYear.toString()) {
                                        var selectindex = ind;
                                        openmap.removeLayer(overlayMaps[layers[selectindex].properties.year + " - " + layers[selectindex].properties.label]);
                                    }
                                }
                            }
                        };
                        previoushistorical = this;
                        this.classList.add("vis-item-base");
                        if (this.classList.contains("vis-selected")) {
                            this.classList.remove("vis-selected");
                        }
                        var selectid;
                        var selecteditem = this.firstChild;
                        for (j = 0; j < datarray.length; j++) {
                            var currdataobj = datarray[j];
                            var cc1 = currdataobj.content;
                            var cc2 = selecteditem.innerHTML;
                            var currdatacontent = cc1.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
                            var selecteditemcontent = cc2.replace(/'/g, '"').replace('&amp;', '&').toLowerCase();
                            if (currdatacontent == selecteditemcontent) {
                                selectid = currdataobj.id;
                                var selectedYear = data[selectid - 1].start.getFullYear();
                                var ind, leng;
                                leng = layers.length;
                                for (ind = 0; ind < leng; ++ind) {
                                    var tempitem = layers[ind];
                                    if (tempitem.properties.year == selectedYear.toString()) {
                                        openmap.addLayer(overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label]);
                                        overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label].bringToBack();
                                        overlayMaps[layers[ind].properties.year + " - " + layers[ind].properties.label].setZIndex(-2);
                                    }
                                }
                            }
                        };
                    }
                }
                amountclicked = 0;
            }
        });

openmap.addLayer(overlayMaps[layers[0].properties.year + " - " + layers[0].properties.label]);
var layertitle = "<h4>" + layers[0].properties.label + "-" + layers[0].properties.year + "</h4>";
var layertext = layers[0].properties.text;
$("#mapinfo").html(layertitle + layertext);

0 个答案:

没有答案