做一个截图上传的功能,想在上传前在网页中显示预览,发现做不到。
原因:html,js不能直接访问本地资源,否则存在严重的安全隐患。
类似的还有,js不能设置input:file中的值
今天了解到,这个叫做“客户端编程语言”的同源策略。
同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。
相同域要具有相同的协议(如http), 相同的端口(如80),相同的host
比如,服务器的资源是通过是http访问的,而本地的HTML文件在浏览器中是通过file协议打开的,他们之间不能跨域访问。
不过可以通过flash来提供此功能。
另外IE的滤镜也可以完成此功能,如下:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src="C:\Documents and Settings\chrislvchen\My Documents\My Pictures\myLogo.jpg"); WIDTH: 127px; HEIGHT: 200px;