如何使用jQuery使.pdf文件在新窗口中打开?

6
我如何使用jQuery实现将所有扩展名为.pdf的链接打开到新窗口中?需要更改以下内容:
<a href="domain.com/pdf/parkingmap.pdf">parking map</a>

In to this:

<a href="domain.com/pdf/parkingmap.pdf" target="_blank">parking map</a>

如果有帮助的话,所有文件都在一个叫做/pdf的文件夹里。
4个回答

21
为了实现这个目标,你可以选择任何具有以“.pdf”结尾的“href”属性的a元素,并在其上添加一个target="_blank"属性。 请尝试以下内容:
$(function() {
    $('a[href$=".pdf"]').prop('target', '_blank');
});

你使用.prop('target', '_blank');而不是.attr('target', '_blank');有什么原因吗? - ddavison
@sircapsalot prop 用于修改通过 POJS 元素对象可用的属性,例如 idsrc 等。http://api.jquery.com/prop/ - Rory McCrossan
@RoryMcCrossan 我只需要在头部添加 <script> $('a[href$=".pdf"]').each(function() { $(this).prop('target', '_blank'); }); </script> 吗?看起来好像没有起作用,当我复制并粘贴您的代码时链接中也没有添加任何内容。 - Digi Jeff
1
你还需要一个文档就绪处理程序。我会更新我的答案,以便为您提供整个内容。 - Rory McCrossan
@RoryMcCrossan 我添加了"$(document).ready(function() {",看起来好像可以了,谢谢! - Digi Jeff

3

假设你想要链接不以pdf结尾的页面在同一页面中打开,有一种方法可以实现:

$('a').click(
    function(e){
        e.preventDefault();
        if (this.href.split('.').pop() === 'pdf') {
            window.open(this.href);
        }
        else {
            window.location = this.href;
        }
    });

2

jQuery一行代码:

$('a[href$=".pdf"]').attr('target','_blank');

当前的Javascript:

for (let a of document.querySelectorAll("a")) {
    if (a.href.match("\\.pdf$")) {
        a.target = "_blank";
    }
}

旧版浏览器:

var anchors = document.body.getElementsByTagName('a');
for (var i = 0; i < anchors.length; i++) {
    if(anchors[i].getAttribute('href').match('\\.pdf$') {
        anchors[i].setAttribute('target', '_blank');
    }
}

在这里尝试一下:http://codepen.io/gabssnake/pen/KyJxp


1

<a onclick=ViewPdf(test.pdf) href="">


function ViewPdf(FileName) {
    var url = '../Home/GetPDF?fileName=' + FileName;
    window.open(url, '_blank');

}

现在按照以下方式编写ActionResult
public ActionResult GetPDF(string fileName)
        {
            try
            {
                byte[] fileData = System.IO.File.ReadAllBytes(Functions.GetConfigValue("CDXFilePath") + fileName);
                string resultFileName = String.Format("{0}.pdf", fileName);
                Response.AppendHeader("Content-Disposition", "inline; filename=" + resultFileName);
                return File(fileData, "application/pdf");
            }
            catch
            {
                return File(Server.MapPath("/Content/") + "FileNotFound.html", "text/html");
            }
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接