0

我在网页中嵌入了一堆 PDF,我想为每个 PDF 添加或附加一个下载链接。例如:

<div>
  <object data="files/schedule.pdf" width="99%" height="800"></object>
<div class="link">
  Download Link: <a href="files/schedule.pdf">schedule.pdf</a>
</div>

这样 PDF 将加载到页面中,但如果出于某种原因用户禁用了插件或插件,仍然会有一个链接,他们可以在其中下载文档。

有没有办法用前面的链接以编程方式填充“链接”类 div?

(PDF显示)

"下载链接:<a href="+文件路径+">+文件名+</a>"

以另一种方式去做会更好吗?如中,是否对链接进行了硬编码,然后使用文件路径填充对象数据?基本上,我希望不必为每个对象放置两次文件路径。

4

1 回答 1

1

此代码识别<object>页面上的所有标签,从属性中检索 uri,并在对象标签后立即data=创建一个下载链接。<div>看到这个jsFiddle。(需要 jQuery 库)

$(function(e) {
    var filename_re = /[^\/]+\.pdf$/;
    $('object').each(function(index) {
        var uri = $(this).attr('data');
        var filename = filename_re.exec(uri);
        $(this).after('<div class="link">Download Link: <a href="'+uri+'">'+filename+'</a></div>');
    }); 
});

纯 Javascript 版本(不需要 jQuery)。见jsFiddle

var filename_re = /[^\/]+\.pdf$/;
var obj = document.getElementsByTagName('object');
for (var i = 0, len = obj.length; i < len; i++) {
    var uri = obj[i].data;
    var filename = filename_re.exec(uri);
    var div = document.createElement('DIV');
    div.innerHTML = 'Download Link: <a href="'+uri+'">'+filename+'</a>';
    obj[i].parentNode.insertBefore(div, obj[i].nextSibling);
}​
于 2012-11-13T12:20:27.407 回答