在加载框架的iPad中的window.open()不起作用

我正在尝试修改使用“Morten的JavaScript树菜单”的网站,以便在使用Adobe Reader插件设置的框架中显示PDF。

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

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

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

    

我把它改成只有这样的div ……

  

然后使用以下脚本……

 $(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 = ""; $('.myviewer').append(markup); }; }); 

除了iPad上的window.open()之外,其他function也可以使用。 如果我切换widow.open()可以在计算机上正常工作。 在另一个项目中,我通过onclick函数在iPad上成功使用了window.open()。

我尝试使用计时器function。 我还尝试在div中添加onclick函数并发布click事件。 在这两种情况下,他们都在电脑上工作,而不是iPad。 我很难过。

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

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

是否有人熟悉Mortens树菜单代码,可以告诉我如何调用点击事件,以便它在新标签中打开pdf而不是在框架中打开页面?

谢谢

可能Safari试图阻止弹出窗口。 这意味着当用户点击时,一个动作,window.open是否有效,但是当它“发生”时却没有。

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