Dan*_*Lew 10 javascript greasemonkey image file
我帮助在线管理一个论坛,在这个论坛上我们限制了签名的大小.目前我们通过我写的一个简单的Greasemonkey脚本来测试它; 我们用a包装所有签名<div>,脚本查找它们,然后测量div的高度和宽度.
现在所有脚本都确保签名位于特定的高度/宽度.我想开始自动测量签名内图像的文件大小,以便脚本可以自动标记在签名中包含大图像的用户.但是,我似乎无法找到一种方法来测量页面上加载的图像的大小.我搜索并找到了一个特殊的属性IE(element.fileSize),但我显然不能在我的Greasemonkey脚本中使用它.
有没有办法通过JavaScript在Firefox中找出图像的文件大小?
编辑:人们误解了问题.论坛本身不托管图像; 我们主持人们输入的BBCode作为他们的签名.所以,例如,人们输入:
This is my signature, check out my [url=http://google.com]awesome website[/url]!
This image is cool! [img]http://image.gif[/img]
Run Code Online (Sandbox Code Playgroud)
我希望能够通过Greasemonkey检查这些图像.我可以写一个批处理脚本来扫描所有这些,但我只是想知道是否有办法增强我当前的脚本.
如您所知,IE支持图像的fileSize属性.在其他浏览器中没有这样的运气......但是,您应该能够修改此脚本:
http://natbat.net/2008/Aug/27/addSizes/
它使用JSON读取文件的HTTP头并显示其实际文件大小.这应该可以帮助您阻止人们上传大型动画GIF.
至于获取尺寸:
var img = new Image();
theImage.src = "someimage.jpg";
actualwidth = theImage.width;
actualheight = theImage.height;
Run Code Online (Sandbox Code Playgroud)
这当然是对服务器端最佳处理方式的纯客户端方法.
简短的回答,你不能
另外,检查 jGuru如何以文件输入类型的形式从 JavaScript 检查文件大小?
你会发现一些重要的点
答案很简单,你不能。
原因:浏览器安全性不允许脚本(Javascript/VBScript)甚至小程序和ActiveX控件从本地硬盘读取文件。仅当您的代码由某个证书颁发机构 (CA) 签名时,您才能读取文件。现在输入类型“FILE”也没有读取文件的权限。我们对此无能为力,因为 HTML 就是这么说的。因此,由于它无法读取文件,因此无法找到与输入标记关联的文件的大小。由于无法找到文件大小,因此 JavaScript/VBScript 没有公开任何函数来返回文件大小。但是,如果您需要查找文件大小,例如为了限制上传到网络服务器的文件的大小。然后,一旦用户将文件提交到服务器,您就可以通过在服务器端计算文件内容来实现此目的。这就是许多免费电子邮件提供商(例如 www.hotmail.com)所做的事情。