Как сделать так, чтобы всплывающее окно jQuery Mobile отображалось на весь экран устройства

#jquery #html #jquery-mobile

#jquery #HTML #jquery-mobile

Вопрос:

Я изо всех сил старался, чтобы всплывающее окно отображалось на весь экран в JQM, но не смог этого сделать

Вот скрипка

И код выглядит так:

HTML

 <div data-role="page" id=""> <a href="#sql" id="opendialog" data-rel="popup" class="ui-btn ui-corner-all ui-shadow ui-btn-inline" data-transition="pop">Open Dialog</a>

    <div data-role="popup" id="sql" data-dismissible="false" style="max-width:100%">
        <div data-role="header" data-theme="a">
             <h1>Delete Page?</h1>

        </div>
        <div role="main" class="ui-content">
             <h3 class="ui-title">Are you sure you want to delete this page?</h3>

            <p>This action cannot be undone.</p> <a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-btn-b" data-rel="back">Cancel</a>
 <a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-btn-b" data-rel="back" data-transition="flow">Delete</a>

        </div>
    </div>
</div>
  

Спасибо и с уважением

Комментарии:

1. проверьте это jsfiddle.net/N2UYZ/1

Ответ №1:

  • Решение CSS:

    Это относится к любому всплывающему окну.

     .ui-popup-container, .ui-popup {
        height: 98%;
        width: 100%;
        position: absolute;
        top: 0;
        left:0;
    }
      
  • Решение на JS:

    Предназначенное для конкретного всплывающего окна.

     $(document).on("pagecreate", "#pageID", function () {
        $("#sql").popup({
            beforeposition: function () {
                $(this).css({
                    width: window.innerWidth,
                    height: window.innerHeight - 14
                });
            },
            x: 0,
            y: 0
        });
    });
      

ДЕМОНСТРАЦИЯ

Ответ №2:

Чтобы избежать стандартного заполнения jQuery mobile размером 15 пикселей для всплывающих окон и установить ширину всплывающего окна равной 100%, не записывая жестко запрограммированные значения, вы можете сделать следующее:

HTML:

 <div data-role="popup" id="sql" data-dismissible="false" data-tolerance="0"> 
  

CSS:

 .ui-popup-container
{
    width: 100%;
    height: 100%;
}
  

JavaScript:

 $(document).on("pagecreate", function (event, ui) {
    $("#sql").on("popupbeforeposition", popUpSql_OnBeforePosition);
});

function popUpSql_OnBeforePosition(event, ui) {
    var horizSpacing = 5;
    var vertSpacing = 5;
    var horizPaddingBorderSize = $(this).outerWidth() - $(this).width();
    var vertPaddingBorderSize = $(this).outerHeight() - $(this).height();

    $(this).css({
        left: horizSpacing,
        top: vertSpacing,
        width: window.innerWidth - (horizSpacing * 2) - horizPaddingBorderSize,
        height: window.innerHeight - (vertSpacing * 2) - vertPaddingBorderSize
    });
}
  

Этот код также позволяет изменять горизонтальный и вертикальный интервал всплывающего окна, позволяя видеть теневую границу.

JSFiddle

Ответ №3:

Этот код добавляет новый метод ‘setText’ в виджет mobile.popup, определенный в источниках jquery. Используйте его для изменения содержимого всплывающего окна. Всплывающее окно будет автоматически центрировано в окне

 <div data-role="popup" id="popup-info"  data-theme="b" class="ui-content" >
    <a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-left">Fermer</a>
    <div id="content"></div>
</div>    

<script>
(function($) {
    $.widget( "mobile.popup", $.mobile.popup, {
        setText: function(_text) {
            container=this.element.find('div:first');
            if(container!==undefined){
                container.html(_text);
            }else{
                this.element.html(_text);
            }
            var newX = parseInt(($(window).width()-this._ui.container.width())/2);      
            var newY = parseInt(($(window).height()-this._ui.container.height())/2);        
            this.reposition( {x:newX,y:newY,positionTo:'window'}  );
        }
    });     
})(jQuery);

$('#popup-info').popup('setText',str);
</script>