求请教代码:点击某个链接, 5 秒后在本页面上出现隐藏的内容(下载地址) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
huage
V2EX    Javascript

求请教代码:点击某个链接, 5 秒后在本页面上出现隐藏的内容(下载地址)

  •  
  •   huage 2016-08-16 11:57:53 +08:00 5083 次点击
    这是一个创建于 3419 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于业务逻辑需要,要用户在点击下载链接后,出现 5 秒倒计时,然后本页面上出现下载地址。由于对 Javascript 不太熟悉,求实现代码。

    有点类似于这个问题,但是我不是要直接下载文件,而是出现下载地址。 https://segmentfault.com/q/1010000006082435

    17 条回复    2016-08-16 20:43:49 +08:00
    cxe2v
        1
    cxe2v  
       2016-08-16 11:59:57 +08:00
    setTimeout()和 setInterval() 结合使用
    cstome
        2
    cstome  
       2016-08-16 12:16:04 +08:00 via Android
    <div style=“ display: none ”>下载链接</div>

    然后 js : setTimeout()将那个 div 的 display 改成 block
    lijsh
        3
    lijsh  
       2016-08-16 14:23:07 +08:00
    1. 倒计时功能要写个 setInterval ,每秒触发一次, 5 秒后清除掉。
    2. 写个函数 fn ,实现显示下载地址的功能,然后这样调用: setTimeout(fn, 5000)
    flowfire
        4
    flowfire  
       2016-08-16 14:43:21 +08:00
    。。。。。为什么我看到这个问题的第一反应是怎么防止前段看代码直接抓数据。。。
    sheep3
        5
    sheep3  
       2016-08-16 15:05:25 +08:00
    @flowfire = =同这么想
    ljbha007
        6
    ljbha007  
       2016-08-16 15:07:54 +08:00
    伸手党在这里是会被骂的
    huage
        7
    huage  
    OP
       2016-08-16 16:10:59 +08:00
    @ljbha007 是请教大家,不算申手直接拿,我也在 V2EX 中回答过许多问题。术业有专攻,入门要人指点带路。
    ljbha007
        8
    ljbha007  
       2016-08-16 16:17:21 +08:00
    @huage 我认为“求实现代码。” 是直接叫人帮你写的意思
    ArthurKing
        9
    ArthurKing  
       2016-08-16 16:18:27 +08:00
    为什么我第一时间想到了 1024 上经常用到的图床……
    annielong
        10
    annielong  
       2016-08-16 16:58:22 +08:00
    如果是为了防抓取,还要加上 ajax 读取下载地址,现在 1024 有一个图床特闹人,同样的 url 直接访问可以看到图片,一旦下载就变成了小图片,还没开始研究怎么跳过去
    ZGLHHH
        11
    ZGLHHH  
       2016-08-16 17:00:02 +08:00   1
    这方面你可以请教一下 yunfile 这个网盘
    Durandal01
        12
    Durandal01  
       2016-08-16 17:20:12 +08:00
    ~~~
    [5,4,3,2,1,0].forEach((i) => {
    setTimeout((i) => {
    if(i === 0) {
    ajax.getDownloadUrl().then((url) => {
    yourButton.href = url;
    yourButton.removeAttr('disabled');
    })
    } else {
    yourButton.innerHTML = `倒数:${i}`;
    }
    }), 1000*(5 - i));
    });
    ~~~

    大概是这样吧……不保证能运行哟
    phxsuns
        13
    phxsuns  
       2016-08-16 18:19:45 +08:00
    @Durandal01 你这代码楼主肯定跑不起来。。。
    likai
        14
    likai  
       2016-08-16 18:30:23 +08:00
    只是显示隐藏内容不还倒数就没意义了吧。
    肯定是延时向服务器请求下载链接。然后显示在指定位置
    xycool
        15
    xycool  
       2016-08-16 18:36:36 +08:00   1
    huage
        16
    huage  
    OP
       2016-08-16 20:38:39 +08:00
    @xycool 感谢指导!
    huage
        17
    huage  
    OP
       2016-08-16 20:43:49 +08:00
    @ZGLHHH 确实就是那样的需求
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5185 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 09:14 PVG 17:14 LAX 01:14 JFK 04:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86