jqueryui resizable Невозможно установить iframe как изменяемый размер - PullRequest
1 голос
/ 01 ноября 2009

Я пытаюсь использовать jquery ui, изменяемый размер с iframe.

Это просто не работает, я вообще не вижу никаких ручек. Однако добавлен класс ui-resizable.

Пример: http://jsbin.com/uyolu

Это нормально? Как мне исправить? Спасибо.

1 Ответ

3 голосов
/ 01 ноября 2009

Изменение размера не работает, можно считать ошибкой. ( Подсказка может быть файл один?). Но это, конечно, спорно.

Для элементов, которые не поддерживают дочерние узлы, в плагине есть специальная проверка

if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {

если это совпадает, плагин автоматически генерирует div для вас.

Если вы добавите iframe в этот список

if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img|iframe/i)) {

Образец будет работать так, как вы его предоставили.

Но если iframe принимает детей, проблема в том, что вы выглядите ими только тогда, когда ваш браузер не поддерживает встроенные фреймы. Вы можете проверить следующее, если ваш браузер позволяет отключить поддержку iframe (например, Opera )

например. когда ваш браузер не понимает фреймы, вы увидите изменяемый размер элемента, который говорит "привет"

#iframeid { background-color:green; height:200px; width:400px}
$("#helloiframe").resizable();
<iframe id="iframeid" src="http://google.com" ><p>hello</p></iframe>

Но, как большинство браузеров понимают iframe, вы не видите детей iframe. Дескрипторы, используемые jquery resizable, - это div, который добавляется к элементу, поэтому вы не видите дескрипторы.

В конце я делаю вывод, что плагин изменяемого размера в особом случае iframe ведет себя правильно, и вам просто нужно заключить свой iframe в div.

Надеюсь, я был чист.


Див показал мне изменяемые размеры элементов управления. Только iframe не показывал элементы управления.

У меня работает следующее:

  • завернутый iframe в div
  • сделал div изменяемого размера
  • div-обертка и начальный кадр iframe одинаковой ширины и высоты
  • передать идентификатор iframe в качестве опции на resizable() {alsoResize: '#iframeid'}

Выезд http://jsbin.com/arato/ или следующий.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css" type="text/css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
    <title>Sandbox</title>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <style type="text/css" media="screen">
      body { background-color: #000; font: 16px Helvetica, Arial; color: #fff; }
      #test { background-color: red; height: 200px; width: 400px; }
      #hello { background-color: blue; height: 200px; width: 400px; }
      #helloiframe { height: 200px; width: 400px; }
    </style>
    <script type="text/javascript">
      $(document).ready(function() {
        $("#test").resizable();
        $("#hello").resizable({ alsoResize: '#helloiframe' });
      });
    </script>
  </head>
  <body>
    <div id="test">Hello from JS Bin</div>
    <div id="hello">
      <iframe id="helloiframe" src="http://google.com"></iframe>
    </div>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...