链接,图片、视频的识别换成Javascript处理如何? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
monster
V2EX    Project Babel

链接,图片、视频的识别换成Javascript处理如何?

  •  
  •   monster 2010-12-06 10:17:31 +08:00 6039 次点击
    这是一个创建于 5423 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在的客户端的机器性能和浏览器JS引擎的效率都有很大提高。
    14 条回复    1970-01-01 08:00:00 +08:00
    chone
        1
    chone  
       2010-12-06 11:19:07 +08:00
    也就是所有这些都只是一些url,然后通过客户端根据不同的需求来展现
    这样做似乎能实现更丰富的展现方式!还能让用户自定义!!
    good idea
    remember2015
        2
    remember2015  
       2010-12-06 21:32:24 +08:00
    没有明白意思
    dimlau
        3
    dimlau  
       2010-12-06 21:47:27 +08:00
    恩,听上去不错。至少不会像现在这样改了 filters.py 也不能实时生效。
    disinfeqt
        4
    disinfeqt  
       2010-12-06 22:12:49 +08:00
    在我极端的想法中,V2EX 不仅仅是先进后端技术的产物,而应该是前后端同时高级的混合产物。
    比如 WebSockets、Mustache 之类的,AJAX 就更不用说了。
    keakon
        5
    keakon  
       2010-12-06 22:26:48 +08:00
    如果浏览器没有启用Javascript,或者文档还没下载完毕,Javascript来不及解析时,就会看到一堆标签了…

    举例来说,我的手机就不支持Javascript
    j
        6
    j  
       2010-12-06 22:28:36 +08:00
    可以只考虑智能手机和PC。没有JS支持的浏览器大概是ucweb吧。。。建议跳过。
    dimlau
        7
    dimlau  
       2010-12-06 23:50:05 +08:00
    @keakon 手机浏览有专门的界面啊,那个界面可以不转义链接的。
    即使是在桌面上,不支持 JS 的浏览器也只显示没有经过转义的原链接而已,不会有什么一堆标签啊。比如现在的 mobile 界面里的视频链接那样。
    predator
        8
    predator  
       2010-12-06 23:53:26 +08:00 via iPod
    lianghai
        9
    lianghai  
       2010-12-07 00:00:25 +08:00
    @keakon 让 JS 不工作时显示原始纯文本链接就好,连 <a> 都不要加,以免出现转义错误。
    keakon
        10
    keakon  
       2010-12-07 01:47:18 +08:00
    以下言论对事不对人,见谅。

    假如我想发一张我的头像,我假设有这4种方案:
    http://v2ex.appspot.com/avatar/2704/normal
    [img]http://v2ex.appspot.com/avatar/2704/normal[/img]
    {{http://v2ex.appspot.com/avatar/2704/normal|我的头像}}
    <img src="http://v2ex.appspot.com/avatar/2704/normal" alt="我的头像"/>

    第一种服务器不需要做任何处理,Javascript也完全不知道这个是图像,顶多当成URL来显示

    第二和三种,服务器如果不做处理,关闭Javascript就会看到奇怪的代码。
    你说手机模式可以显示原始链接,请问怎么获取原始链接?你得分析这个标签,得判断标签是否嵌套,得考虑标签是否正常关闭了,这工作量和直接在服务器端解析有什么区别?

    第四种也好不到哪去,不但要判断关闭什么的,还得判断是否有恶意代码,例如Javascript事件啊、CSS样式什么的。甚至还有可能写一些未转义的HTML实体。
    举个最简单的例子,你认为有多少人知道链接中包含&时,写在src或href属性里时要手动改成&amp;,否则以XHTML输出时浏览器会报解析失败的错误?

    就算你对这些都不在乎,网站的管理者还得考虑SEO啊。所有的链接、图像什么的都变成了纯文本,而搜索引擎是不会执行Javascript把文本转成标签的。
    如今HTML元素早已不只是为了表象存在的,它的表意功能才是推崇的,而这种方式就破坏了HTML的语义了。

    我知道你们认为Javascript很牛,什么都能搞定,但是web开发不是那种想当然一拍脑袋就去做的事,有着一大堆烦人的取舍问题。考虑问题不能只想能否做到,还要想是否该这么做,以及是否值得去做。
    chone
        11
    chone  
       2010-12-07 02:10:07 +08:00
    @keakon 我们在讨论的是 Project Label.主要是针对现在的帖子内容来说的。只是把filter.py的工作拿到前段来做,如果不支持Javascript就用<a>标签来显示链接我觉得对于Project Label来说完全是一种可以接受的方案
    dimlau
        12
    dimlau  
       2010-12-07 02:15:17 +08:00
    @keakon 呃,就你举的例子来说,现在 PB 在服务器端的处理,第一种方案也不会转义成图片的。
    再拿图片举例,PB 现在只会处理以 cl.lyimg.ly 开头的链接。而且很“不智能”地把所有 cl.ly 开头的链接都解释成图片,而不去分析这个链接的内容是不是图片。
    所以我(们)才会有上面的观点──其实只是想把 filters.py 在服务器端做的事拿出来由浏览器去做。
    我对这个想法叫好的原因是,比如现在要想添加对其他图片网站的支持就不但要修改 filters.py 还要再动一些模板文件。如果是 JS 来实现的话就简单到更新一下那个单独的 JS 文件就可以了,仅此而已。

    所以我觉得可能是你过于激动了……另外,澄清到这里,你上面提到的 SEO 问题应该不存在了吧。
    dimlau
        13
    dimlau  
       2010-12-07 02:17:03 +08:00
    @chone 呃……上边这段话竟然用了超过 5 分钟来输入?!所以被你抢先了。看来我也激动了,哈哈。
    话说作为非程序员我应该表示毫无压力才对嘛。
    keakon
        14
    keakon  
       2010-12-07 02:30:34 +08:00
    要睡觉了,不说太多

    @chone PB还没去做并不代表这件事服务器端不能做。而我所表达的是服务器端来做比客户端来做更好,不会带来任何兼容性问题。
    而且在我看来Django模板是个很烂的东西,为什么非要强迫自己用它的filters.py,而不用现成的库去解析?

    @dimlau 以你的回复来看,你是要服务器不做任何处理,用户也不写任何标签,也就是这种形式:
    http://v2ex.appspot.com/avatar/2704/normal

    那么Javascript如何判断我是贴URL还是图像还是视频还是音乐还是代码?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2714 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 11:35 PVG 19:35 LAX 04:35 JFK 07:35
    Do have faith in what you're doing.
    ubao 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