Я пытаюсь изменить размер встроенного объекта. Проблема в том, что когда мышь наводит курсор на объект, он берет на себя «управление» мышью, поглощая события движения. В результате вы можете расширить div, содержащий объект, но при попытке его сжать, если мышь входит в область объекта, изменение размера останавливается.
В настоящее время я скрываю объект во время движения. Мне интересно, есть ли способ просто предотвратить захват мыши объектом. Возможно, наложение другого элемента поверх него, не позволяющего событиям мыши достигать внедренного объекта?
использование ореола при изменении размера не работает для встроенных объектов, кстати.
Добавление награды, так как я никогда не смогу заставить это работать. Чтобы собрать, просто сделайте следующее:
Предоставьте веб-страницу со встроенным PDF-файлом по центру страницы. PDF-файл не может занять всю страницу; сделайте его ширину / высоту 50% ширины окна браузера или что-то в этом роде.
Используйте jQuery 1.2.6, чтобы изменить размер всех сторон и углов PDF-файла.
PDF-файл НЕ ДОЛЖЕН ЗАХВАТЫВАТЬ МЫШЬ и прекращать перетаскивание при сжатии PDF-файла. Это означает, что когда я нажимаю на край PDF-файла и перетаскиваю, когда мышь входит в поле отображения PDF-файла, операция изменения размера продолжается.
Это должно работать в IE 7. Хаки с условным CSS (если gte ie7 или что-то еще) подойдут.
Хммм ... Я думаю, это может быть проблема с iframe ...
<div style = "text-align:center; padding-top:50px;">
<div id = "doc" style = "width:384px;height:512px;">
<iframe id = "docFrame" style = "width: 100%; height: 100%;"
src='http://www.ready.gov/america/_downloads/sampleplan.pdf'>
</iframe></div></div>
<div id = "data"></div>
<script type = "text/javascript">
$(document).ready(function() {
var obj = $('#docFrame');
$('#doc').resizable({handles:'all', resize: function(e, ui) {
$('#data').html(ui.size.width + 'x' + ui.size.height);
obj.attr({width: ui.size.width, height: ui.size.height});
}});
});
</script>
Это не работает. Когда ваша мышь попадает в iframe, операция изменения размера останавливается.
Есть несколько хороших ответов; если награда закончится до того, как я смогу их проверить, я восстановлю награду (те же 150 баллов).
Это программа просмотра документов xps. У меня была такая же проблема с программой просмотра PDF от Adobe.
Эй, вы можете показать код для создания этого встроенного PDF-файла, о котором вы говорите? Я попробую.
Чувак, давай. Я отказываюсь от очков по этому поводу. Поищи в Гугле.
У меня есть. Я не могу найти чертову программу просмотра документов xps на странице, хоть убей.
Оверлей.
Одно слово запрещено отвечать, в этом предложении нет глагола.
Извини, я новичок. Пример кода приветствуется, так как наложение jquery в Google не особо помогает.
Вы можете просто добавить скрытый элемент наложения, который перекрывает объект, для которого установлено значение 100% высоты / ширины, и переключать его во время изменения размера. Я отправлю псевдокод в качестве отдельного ответа, если этой информации недостаточно для продолжения.
Если вы можете заставить его работать и продемонстрировать это, возьмите награду. Я не могу получить проклятый оверлей, чтобы сделать джек шизнит.
Я отвечу на оверлей, но приведу реальный код: P
Я называю его «последователем» вместо наложения и используется в моем подключаемом модуле ThreeSixty для jQuery (предоставлен довольно простой исходный код, вы поймете, читая, что происходит с div «последователя».
Ну, мне совершенно не удалось найти пример средства просмотра документов XPS или еще чего-то, но я смог придумать this working sample
. Он не использует идею наложения, но это PDF-файл, размер которого можно изменить ...
редактировать то, что сделало эту работу без оверлея, - это параметр wmode
, установленный на transparent
. Я не очень хорошо разбираюсь в деталях, но это сделало его приятным в IE7. Также работает в Firefox, Chrome, Safari и Opera.
У новое редактирование серьезные проблемы с его работой с фреймами. Некоторая информация, которую я нашел, не очень обнадеживает. А с <object>
это невозможно? Или <object>
внутри iframe?
Дайте мне пару дней, чтобы проверить это; образец хорошо смотрится с флеш-бумагой, но может гадить на xps / pdf.
Обновил вопрос с образцом кода. Я не думал, что iframe все испортил ...
Возможно SmartLook - альтернатива. Это похоже на сценарии для лайтбоксов, но для встроенного контента, такого как PDF-файлы.
Это интересно, но я не могу использовать его в этом проекте. Спасибо за информацию.
Вот что работает для меня, хотя при изменении размера он скрывает iframe. Это проблема для вас?
$(document).ready(function() {
var obj = $('#docFrame');
$('#doc').resizable(
{
handles: 'all',
resize: function(e, ui) {
$('#data').html(ui.size.width + 'x' + ui.size.height);
obj.attr({ width: ui.size.width, height: ui.size.height });
},
start: function(e, ui) { $('#docFrame').hide(); },
stop: function(e, ui) { $('#docFrame').show(); }
});
});
потому что он сказал: «В настоящее время я прячу объект во время движения. Мне интересно, есть ли способ просто предотвратить захват мыши объектом». Я не уловил этот комментарий о том, как он сейчас это делает, когда впервые прочитал его. :)
В IE вы можете вызвать setCapture () / releaseCapture (), у меня он отлично работал с iframe.
С Firefox - прозрачное наложение, как уже предлагалось.
Благодаря новой функции StackOverflow «Недавние действия» я увидел, что вы просили меня предоставить пример кода. Я провел лишь незначительное тестирование (похоже, не могу заставить ваш код встроить PDF-файл в IE, по-видимому, для этого требуется плагин PDF, который у меня не установлен), поэтому это может не сработать. Но это только начало.
<div style = "text-align: center; padding-top: 50px;">
<div id = "doc" style = "width: 384px; height: 512px; position: relative;">
<div id = "overlay" style = "position: absolute; top: -5px; left: -5px;
padding: 5px; width: 100%; height: 100%; background: red;
opacity: 0.5; z-index: 1; display: none;"></div>
<iframe id = "docFrame" style = "width: 100%; height: 100%; position: relative; z-index: 0;"
src='http://www.ready.gov/america/_downloads/sampleplan.pdf'></iframe>
</div>
</div>
<div id = "data"></div>
<script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js" type = "text/javascript" charset = "utf-8"></script>
<script src = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.js" type = "text/javascript" charset = "utf-8"></script>
<script type = "text/javascript">
$(document).ready(function() {
var obj = $('#docFrame'), overlay = $('#overlay');
$('#doc').resizable({
handles: 'all',
start: function() {
overlay.show();
},
resize: function(e, ui) {
$('#data').html(ui.size.width + 'x' + ui.size.height);
obj.attr({
width: ui.size.width,
height: ui.size.height
});
},
stop: function(e, ui) {
overlay.hide();
}
});
});
</script>
Я проверю это. Спасибо. Кроме того, вы можете посмотреть плагин foxit для PDF-файлов. Достойная замена саману без всей сопутствующей ерунды.
var dframe = $("#docFrame");
$(document).ready(function () {
var b = dframe;
$("#doc").e({
b: "all",
resize: function (c, a) {
$("#data").html(a.size.width + "x" + a.size.height);
object.attr({
width: a.size.width,
height: a.size.height
});
},
start: function () {
dframe.hide();
},
stop: function () {
dframe.show();
}
});
});
Встроенный объект как вспышка или ударная волна?