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

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

举例来说,我的手机就不支持JavaScript
j
2010-12-06 22:28:36 +08:00
可以只考虑智能手机和PC。没有JS支持的浏览器大概是ucweb吧。。。建议跳过。
dimlau
2010-12-06 23:50:05 +08:00
@keakon 手机浏览有专门的界面啊,那个界面可以不转义链接的。
即使是在桌面上,不支持 JS 的浏览器也只显示没有经过转义的原链接而已,不会有什么一堆标签啊。比如现在的 mobile 界面里的视频链接那样。
predator
2010-12-06 23:53:26 +08:00
lianghai
2010-12-07 00:00:25 +08:00
@keakon 让 JS 不工作时显示原始纯文本链接就好,连 <a> 都不要加,以免出现转义错误。
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
2010-12-07 02:10:07 +08:00
@keakon 我们在讨论的是 Project Label.主要是针对现在的帖子内容来说的。只是把filter.py的工作拿到前段来做,如果不支持javascript就用<a>标签来显示链接我觉得对于Project Label来说完全是一种可以接受的方案
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
2010-12-07 02:17:03 +08:00
@chone 呃……上边这段话竟然用了超过 5 分钟来输入?!所以被你抢先了。看来我也激动了,哈哈。
话说作为非程序员我应该表示毫无压力才对嘛。
keakon
2010-12-07 02:30:34 +08:00
要睡觉了,不说太多

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

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

那么JavaScript如何判断我是贴URL还是图像还是视频还是音乐还是代码?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/5475

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX