Answers:
我可能会建议使用以下方法作为更优雅的降级解决方案preventDefault
:
$('a').click(function(e) {
e.preventDefault(); //stop the browser from following
window.location.href = 'uploads/file.doc';
});
<a href="no-script.html">Download now!</a>
即使没有Javascript,至少用户也可以通过这种方式获得一些反馈。
如果您不希望搜索引擎为某些文件编制索引,则可以使用robots.txt告诉网络蜘蛛不要访问您网站的某些部分。
如果您仅依靠javascript,那么一些没有使用javascript进行浏览的用户将无法单击您的链接。
robots.txt
将无济于事,因为它仍将存储在浏览器历史记录和中间服务器中。
这是一篇很好的文章,展示了从搜索引擎隐藏文件的多种方法:
JavaScript不是不索引页面的好方法。它不会阻止用户直接链接到您的文件(从而将其显示给搜寻器),而且正如罗布提到的那样,它不适用于所有用户。
一个简单的解决方法是添加rel="nofollow"
属性,但是再次说明,没有robots.txt,它是不完整的。
<a href="uploads/file.doc" rel="nofollow">Download Here</a>
是的,您必须将window.location.href更改为要下载的文件的URL。
window.location.href = 'http://www.com/path/to/file';
var link=document.createElement('a');
document.body.appendChild(link);
link.href=url;
link.click();
$('blah').each(function(){ $('body').append('<a href="'+xxx+'" download="'+dynamicname+'" />'); }) $('a').trigger('click');
我用了。
使用jQuery函数
var valFileDownloadPath = 'http//:'+'your url';
window.open(valFileDownloadPath , '_blank');
通过声明,window.location.href = 'uploads/file.doc';
您可以显示文件的存储位置。您当然可以使用.htacess强制执行存储文件所需的行为,但这可能并不总是很简单...。
最好创建一个服务器端的php文件,并将此内容放入其中:
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$_REQUEST['f']);
readfile('../some_folder/some_subfolder/'.$_REQUEST['f']);
exit;
此代码将下载任何文件,而不会显示您实际存储的位置。
您通过打开此php文件 window.location.href = 'scripts/this_php_file.php?f=downloaded_file';
我建议您使用mousedown事件,该事件在click事件之前被称为。这样,浏览器可以自然地处理click事件,从而避免了任何代码怪异:
(function ($) {
// with this solution, the browser handles the download link naturally (tested in chrome and firefox)
$(document).ready(function () {
var url = '/private/downloads/myfile123.pdf';
$("a").on('mousedown', function () {
$(this).attr("href", url);
});
});
})(jQuery);