С пользовательским интерфейсом jQuery ...
HTML:
<div class="resizable" style="width: 200px; height: 200px;">
<iframe src="http://www.example.com/" style="width: 100%; height: 100%;"></iframe>
</div>
JavaScript:
$(".resizable").resizable({
start: function(event, ui) {
ui.element.append($("<div/>", {
id: "iframe-barrier",
css: {
position: "absolute",
top: 0,
right: 0,
bottom: 0,
left: 0,
"z-index": 10
}
}));
},
stop: function(event, ui) {
$("#iframe-barrier", ui.element).remove();
},
resize: function(event, ui) {
$("iframe", ui.element).width(ui.size.width).height(ui.size.height);
}
});
jsFiddle: http://jsfiddle.net/B5vHQ/97/
Объяснение:
Поскольку плагин resizable
пользовательского интерфейса jQuery не будет работать непосредственно с iframe, поместите iframe в div и измените его размер.Событие resize
в приведенном выше коде обеспечивает изменение размера iframe в соответствии с div.
Однако в этом методе есть дополнительная проблема - iframes не передают события перемещения мыши родительскому элементу.Чтобы обойти это, события start
и stop
покрывают iframe другим элементом во время изменения размера, так что плагин resizable
может правильно отслеживать движение мыши.
По некоторым причинам, даваяОбертка div явный размер необходим для изменения размера для работы.В большинстве случаев это означает, что для iframe необходим одинаковый размер, поэтому он соответствует размеру div с самого начала.