4

我正在尝试修改一个站点,该站点使用“Morten 的 JavaScript 树形菜单”在使用 Adob​​e Reader 插件的框架集中显示 PDF。

在 iPad 上,框架没用,所以我想在新选项卡中打开 PDF。不想弄乱树形菜单,我想我可以在查看器框架中打开的网页中使用 JavaScript 来打开带有 PDF 的新选项卡。

我在 $(document).ready(function() 中使用 window.open() 在新选项卡中打开 pdf。问题是 window.open() 不想在 iPad 上工作。

HTML 的正文通常看起来像这样......

<body>
    <object data="MypdfFileName.pdf#toolbar=1&amp;navpanes=1&amp;scrollbar=0&amp;page=1&amp;view=FitH" 
    type="application/pdf" 
    width="100%" 
    height="100%">
    </object>
</body>

我将其更改为只有这样的 div ...

<body>
    <div class="myviewer" ></div>
</body>

然后使用以下脚本...

$(document).ready(function() {
    var isMobile = {
        Android : function() {
            return navigator.userAgent.match(/Android/i) ? true : false;
        },
        BlackBerry : function() {
            return navigator.userAgent.match(/BlackBerry/i) ? true : false;
        },
        iOS : function() {
            return navigator.userAgent.match(/iPhone|iPad|iPod/i) ? true : false;
        },
        Windows : function() {
            return navigator.userAgent.match(/IEMobile/i) ? true : false;
        },
        any : function() {
            return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows());
        }
    };

    if(isMobile.any()) {
        var file = "MypdfFileName.pdf";
            window.open(file);
    }else {
        var markup = "<object   data='MypdfFileName.pdf#toolbar=1&amp;navpanes=1&amp;scrollbar=0&amp;page=1&amp;view=FitH' type='application/pdf' width='100%' height='100%'></object>";
        $('.myviewer').append(markup);
    };
});

除了 iPad 上的 window.open() 之外,一切都有效。如果我在 widow.open() 周围进行切换,则可以在计算机上正常工作。在另一个项目中,我通过 onclick 函数在 iPad 上成功使用了 window.open()。

我尝试使用计时器功能。我还尝试将 onclick 函数添加到 div 并发布点击事件。在这两种情况下,他们都在电脑上工作,而不是 iPad。我难住了。

我知道在树形菜单框架中处理 ipad 会更有意义,但是该代码太复杂了,我无法弄清楚在哪里放置/修改 onclick 事件。

有没有办法更改对象以使其在新选项卡中打开?

是否有人对 Mortens Tree 菜单代码足够熟悉,可以告诉我如何更改点击事件,以便它在新选项卡中打开 pdf 而不是在框架中打开页面?

谢谢

4

2 回答 2

3

可能 Safari 会尝试阻止弹出窗口。这意味着当用户单击时,执行操作时 window.open 有效,但在“发生”时无效。

于 2012-06-03T22:38:22.230 回答
0

您还应该检查您的元素和父元素,并确保那里没有 ":hover" 伪类。当您触摸期望发生“单击”事件的元素时,它将触发元素上的悬停状态。如果您再次触摸,它将触发点击事件。

于 2013-12-10T22:49:45.403 回答