微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – Mobiscroll的问题 – orientationchange和访问地址栏崩溃了一些移动浏览器

标题,但邮寄太长:
“ASP.NET MVC 4,Razor,JQuery,JQueryMobile,Mobiscroll问题 – orientationchange和访问地址栏崩溃了一些移动浏览器.改变滚动条的宽度和高度在某些手机上不起作用.”

崩溃问题发生在Android 2.1上.
它不会发生在iPhone,HTC EVO 4G LTE或其他HTC上.

更改滚动条宽度和高度不适用于HTC.如果我更改为横向,则滚动条的大小应与纵向相同.如果我将它改回肖像,那么卷轴就是它应该在横向上的尺寸.

这是JQuery / Mobiscroll代码

  function createDatePicker(selector){
        if($("#input_date_1").scroller('isdisabled') != 'undefined'){
            var scrollWidth = ($("div[id='main_content']").width())  / 4;
            var scrollHeight = scrollWidth / 2.5;
            $("#input_" + selector).scroller({
                    preset: 'date',
                    minDate: new Date(2000, 0, 1),
                    maxDate: new Date(2020, 11, 31),
                    theme: 'android',
                    display: 'inline',
                    mode: 'scroller',
                    dateOrder: 'mmddyy',
                    width: scrollWidth,
                    height: scrollHeight,
                    onChange: function (valueText, inst) {
                        var lbl = $("#lbl_" + selector);
                        var date = $("#input_" + selector).scroller('getDate');
                        lbl.text(date.toDateString());
                    }
                });
        }

  function setDatePickerWidthAndHeight(){ 
        var scrollWidth = ($("div[id='main_content']").width())  / 4;
        var scrollHeight = scrollWidth / 2.5;
        var selectorBase1 = "date_1";

         $("#input_" + selectorBase1).eq(0).scroller('option', 'width', scrollWidth);
         $("#input_" + selectorBase1).eq(0).scroller('option', 'height', scrollHeight);
    }

  $(function () {
        createDatePicker('date_1');

        $(window).bind('orientationchange', function (event) {
            setTimeout(setDatePickerWidthAndHeight(),100);
        });
    });

我将这些脚本包含在@section scripts {}中,这些脚本在页面底部呈现(不确定是否相关).

任何帮助,将不胜感激.

解决方法:

事实证明,问题是旧的Android手机不像上面写的那样喜欢调整大小事件….而且新手机不喜欢orientationchange事件.此链接代码使一切工作完美:

http://paulirish.com/2009/throttled-smartresize-jquery-event-handler/

以下是我如何使用它:

//
// usage:
//$(window).smartresize(function () {
//    // code that takes it easy...
//});
//http://paulirish.com/2009/throttled-smartresize-jquery-event-handler/
(function ($, sr) {

    // debouncing function from John Hann
    // http://unscriptable.com/index.PHP/2009/03/20/debouncing-javascript-methods/
    var debounce = function (func, threshold, execAsap) {
        var timeout;

        return function debounced() {
            var obj = this, args = arguments;
            function delayed() {
                if (!execAsap)
                    func.apply(obj, args);
                timeout = null;
            };

            if (timeout)
                clearTimeout(timeout);
            else if (execAsap)
                func.apply(obj, args);

            timeout = setTimeout(delayed, threshold || 100);
        };
    }
    // smartresize 
    jQuery.fn[sr] = function (fn, threshold, execAsap) { return fn ? this.bind('resize', debounce(fn, threshold, execAsap)) : this.trigger(sr); };

})(jQuery, 'smartresize');


  $(function () {
        createDatePicker('date_1');

         $(window).smartresize(function () {
                setDatePickerWidthAndHeight();
            }, 200);
    });

在这文章的答案中找到了链接window.resize in jquery firing multiple times

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐