我正在尝试修改使用“Morten的JavaScript树菜单”的网站,以便在使用Adobe Reader插件设置的框架中显示PDF。
在iPad上框架没用,所以我想在新标签页中打开PDF。不想弄乱树状菜单我以为我可以在查看器框架中打开的网页中使用JavaScript来打开带有PDF的新选项卡。
我在$(document).ready(function()中使用window.open()来打开新标签中的pdf。问题是window.open()不想在iPad中工作。 / p>
HTML的正文通常看起来像这样......
<body>
<object data="MypdfFileName.pdf#toolbar=1&navpanes=1&scrollbar=0&page=1&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&navpanes=1&scrollbar=0&page=1&view=FitH' type='application/pdf' width='100%' height='100%'></object>";
$('.myviewer').append(markup);
};
});
除了iPad上的window.open()外,其他方式都有效。如果我切换widow.open()可以在计算机上正常工作。在另一个项目中,我通过onclick函数在iPad上成功使用了window.open()。
我尝试使用计时器功能。我还尝试向div添加onclick函数并发布click事件。在这两种情况下,他们都在电脑上工作,而不是iPad。我很难过。
我知道在树状菜单框架中处理ipad会更有意义,但是代码太复杂了我无法弄清楚放置/修改onclick事件的位置。
有没有办法更改对象以便在新标签页中打开?
是否有人熟悉Mortens树菜单代码,可以告诉我如何调用点击事件,以便在新标签页中打开pdf而不是在框架中打开页面?
由于
答案 0 :(得分:3)
可能Safari试图阻止弹出窗口。这意味着当用户点击时,一个动作,window.open是否有效,但不是“发生”的时候。
答案 1 :(得分:0)
您还应该检查元素和父元素,并确保那里没有“:hover”伪类。当您触摸期望发生“单击”事件的元素时,它将触发元素上的悬停状态。如果再次触摸,则会触发点击事件。