我有一个运行在移动设备上的HTML 5应用程序,包括iPad。我想创建一个非HTML文件的链接,并打开适当的应用程序来处理该文件。这些文件是.acsm文件,要在Bluefire中打开。
如果我将链接创建为简单的< a href =“url”>标签,它的作品。
如果我使用Javascript来设置window.location,它不起作用。 iPad弹出一个提示:“下载失败:无法下载此文件”。
我已经尝试过其他文件类型,还没有找到任何结论。简单的链接和Javascript技术有什么区别?我可以使Javascript代码与链接做同样的事情吗?
如果具体的Javascript细节很重要,我用jQuery这样做:
$('.native-launch').live('click',function (evobj) { var there = $(evobj.target).attr('href'); window.location.href = there; return false; });
并且HTML看起来像:
<span class="catalog-list-button native-launch" href="url">Read in another app</span>
(请注意,这是一个带有href的跨度,如果有帮助,我可以更改HTML。)
解决方法
尝试window.open,传入“_self”作为目标窗口名称。
window.open(there,"_self");
使用“_self”是这里的关键部分,否则弹出窗口拦截器会拦截它。我会测试这个,但是我没有链接到acsm文件。
编辑:另外两个想法:
使用“GET”的方法和acsm文件的操作将表单添加到您的页面。排除表单域,除非它们适当地映射到您的URL。
<form id="acsm" method="GET" action="http://myserver.com/myfile.acsm"></form>
然后用form.submit()提交表单:
document.forms.acsm.submit();
另一个想法:在您的服务器上创建一个服务器端重定向到您的acsm文件的页面。然后只需使用通常的location.href = url到该服务器页面。