V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
monster
V2EX  ›  Project Babel

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

  •  
  •   monster · 2010-12-06 10:17:31 +08:00 · 5552 次点击
    这是一个创建于 5099 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在的客户端的机器性能和浏览器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   ·   实用小工具   ·   1068 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:18 · PVG 03:18 · LAX 11:18 · JFK 14:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.