2

我正在尝试调整嵌入对象的大小。问题在于,当鼠标悬停在对象上时,它会“控制”鼠标,吞噬移动事件。结果是您可以扩展包含对象的 div,但是当您尝试缩小它时,如果鼠标进入对象的区域,则调整大小会停止。

目前,我在移动时隐藏对象。我想知道是否有办法阻止对象捕获鼠标。也许在其上覆盖另一个元素以防止鼠标事件到达嵌入对象?


顺便说一句,在调整大小时使用重影不适用于嵌入式对象。


添加赏金,因为我似乎永远无法让它发挥作用。要收集,只需执行以下操作:

提供一个嵌入了 PDF 的网页,以页面为中心。pdf不能占满整个页面;使其宽度/高度为浏览器窗口宽度的 50% 之类的。

使用 jQuery 1.2.6 为 pdf 的每一边和角落添加调整大小。

缩小 PDF 时,PDF 不得捕捉鼠标并停止拖动。这意味着当我点击pdf的边缘并拖动时,当鼠标进入pdf的显示框时,resize操作继续进行。

这必须在 IE 7 中工作。条件 CSS(如果 gte ie7 或其他)hack 很好。


嗯...我认为这可能是 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 分)。

4

8 回答 8

3

好吧,我完全找不到 XPS 文档查看器示例或诸如此类的东西,但我能够想出this working sample. 它不使用覆盖的想法,但它是一个可以调整大小的 pdf...

编辑使这项工作没有覆盖的东西是wmode参数设置为transparent. 我对细节不是很熟悉,但它使它在 IE7 上运行良好。也适用于 Firefox、Chrome、Safari 和 Opera。

新的编辑很难让它与框架一起工作。我发现的一些信息不是很令人鼓舞。不可能有它<object>吗?还是<object>iframe 内部?

于 2009-01-28T02:24:42.340 回答
1

我会回答覆盖,但会提供实际代码:P

我将其称为“跟随者”而不是覆盖,并在我的 ThreeSixty jQuery 插件中使用(提供了一些简单的源代码,您将了解阅读“跟随者”div 发生了什么。

http://www.mathieusavard.info/threesixty

于 2008-10-07T04:00:28.950 回答
0

覆盖。

一字答禁,此句无动词。

于 2008-10-06T19:50:46.970 回答
0

也许SmartLook是另一种选择。它就像那些灯箱脚本,但用于 pdf 等嵌入式内容。

于 2009-01-29T15:11:17.920 回答
0

这对我有用,但在调整大小时确实隐藏了 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(); }
    });
});
于 2009-01-30T20:10:09.827 回答
0

使用 IE,您可以调用 setCapture()/releaseCapture(),它对我来说非常适合 iframe。

使用 Firefox - 透明覆盖,如前所述。

于 2009-01-30T20:26:18.093 回答
0

感谢 StackOverflow 的新“最近活动”功能,我看到您要求我提供代码示例。我只做了一些小测试(似乎无法让你的代码在 IE 中内联 PDF,大概它需要一个我没有安装的 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>
于 2009-01-31T01:30:17.903 回答
0
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();
        }
    });
});
于 2014-05-29T09:15:39.690 回答