iframe не может быть таким же широким, как его диалоговый контейнер jQuery - PullRequest
1 голос
/ 04 марта 2010

Вот мой тестовый JavaScript для вас, чтобы воспроизвести проблему: Вы увидите, что ширина фрейма составляет примерно половину ширины диалога. Кажется, что jQuery меняет ширину iframe на 'auto' вместо того, чтобы использовать указанное мной значение.

<html>
<head>
    <link rel="stylesheet" href="./styles/smoothness/jquery-ui-1.7.2.custom.css" type="text/css" media="screen" />
    <script type="text/javascript" src="./scripts/jquery-1.3.2.min.js"></script>
    <script type="text/javascript" src="./scripts/jquery-ui-1.7.2.custom.min.js"></script>  
    <script type="text/javascript">var $E = {};

        $E.modal = function(params) {

            return new function(params) {

              if (!params) {
                params = {width: 400, height : 300};  
              }
              var $obj = $("<div style='margin:0px;padding:0px;'></div>");
              var self = this;

              // parse json object to url query string
              var generateQueryString = function(data) {

                queryString = "";

                for (var o in data) {
                  queryString = queryString + "&" + o + "=" + data[o];
                }

                return queryString.replace(/^&/,"?");
              };

              // function - resize
              var resize = function(modal, frame) {
                frame.attr({
                  width : modal.width() ,
                  height : modal.height() 
                });
              };

              this.frame = $(document.createElement("iframe"));
              this.url = "";
              this.modal = $obj;

              /*
               * url : required, String, iFrame - src,
               * params : not required, json object, get args 
              */
              this.load = function(url, params) {

                var queryString = generateQueryString(params);
                var url = url + queryString;

                this.frame.attr({
                  src : url 
                });

                this.frame.dialog("open");
                this.frame.css('border','3px solid red'); //in order to show iframe cant be as wide as its outer dialog container.
                resize(this.modal, this.frame);
              };   

              this.close = function() {
                this.modal.dialog("close");  
              };

              this.frame.appendTo($obj);

              this.frame.dialog($.extend({
                autoOpen : false, 
                modal : true, 
                draggable : true, 
                resizable : true, 
                resize : function() {
                  resize(self.modal, self.frame);
                },
                drag : function() {
                  resize(self.modal, self.frame);
                }
              }, params));

            }(params);
        };

        // click link
        $(function() {
            $('a').click(function(e) {
                e.preventDefault();
                var $this = $(this);
                $E.modal({width:540,height:400}).load("2.html", {s_in_bank_key:'',s_in_acct_num:''});               
            });
        });
    </script>
</head>
<body>
    <ul>
        <li><a href="http://www.google.com" title="Google Dialog">Google</a></li>
        <li><a href="http://jquery.com" title="jQuery Dialog">jQuery</a></li>
        <li><a href="http://jqueryui.com" title="jQuery UI Dialog">jQuery UI</a></li>
    </ul>
</body>
</html>

Обратите внимание, что 2.html может содержать что угодно.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2012

Попробуйте с этим кодом.Надеюсь, это поможет вам.

  $('#example').dialog({
        autoOpen: false,
        height:300,
        open: function() { $('#example iframe').height($(this).height()+60); $
('#example iframe').width($(this).width()-10); },
        resize: function() { $('iframe').hide(); },
        resizeStop: function() { $('iframe').show(); $('#example
iframe').height($(this).height()-70);  $('#example iframe').width($
(this).width()-40); }
});

$('#example').dialog("open"); 
0 голосов
/ 04 марта 2010

Вот как найти проблему, потому что никто не может использовать ваш код, чтобы воспроизвести проблему, не имея всех зависимостей.

Получить Firefox с Firebug

http://getfirebug.com/

Вы можете выбрать элементы в браузере и получить все CSS и HTML для этого элемента, а затем изменить эти значения, чтобы найти проблему. Это необходимо для разработки пользовательского интерфейса.

Кроме того, вы можете отлаживать JavaScript, устанавливая разрывы в живом коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...