拖放文件上传可以在Firefox 3.6中完成.
谷歌搜索html5拖放文件上传-gmail提供的内容如下:
所有这些指南都使用FileReader(或者Firefox 3.6已被弃用getAsBinary,其他浏览器也不支持).
但是,谷歌最近发布了一个Gmail更新,允许在Chromium和Firefox中上传文件,而Chromium则没有FileReader.我每晚都在使用最新的Chromium,它可以拖放上传文件,但不支持FileReader.
我见过有人提到可以通过拖动到拖放上传来实现拖放上传<input type="file" />,但是一次只能支持一个文件,而Gmail的上传器可以处理拖动到它上面的多个文件,所以这显然不是它们的内容这样做.
所以问题是,他们是如何做到的?你如何支持Chromium进行HTML5文件上传?另外,你能支持Safari吗?
这个简单的javascript
var x = new Array();
x[0] = 2.73;
x[1] = 11.17;
x[2] = 3.12
x.sort();
for(var i in x)
alert(x[i]);
Run Code Online (Sandbox Code Playgroud)
产生结果:
11.17, 2.73, 3.12而不是2.73, 3.12, 11.17.
为什么这样,我该如何解决?
提前致谢!
在WebView实例中的WebViewDelegateJavaScript 与a 之间进行通信时,JavaScript类型和Objective-C类型会来回转换.例如,当从JavaScript调用Objective-C函数时,字符串变为a NSString,数字变为a NSNumber,而Object变为a WebScriptObject.
其他的很简单,但WebScriptObject似乎很奇怪.
当传递类似的字典时{"foo": 1, "bar": 2},我看到的大多数代码都使用提取属性valueForKey,例如in[[arg valueForKey:@"foo"] intValue] == 1
但是如果你不确定该物业是否存在呢?如果键是可选的怎么办?[arg valueForKey:@"baz"]抛出一个例外.
我能做的一件事就是
@try {
foo = [[arg valueForKey:@"baz"] intValue];
}
@catch (NSException* e) {
foo = 0;
}
Run Code Online (Sandbox Code Playgroud)
但是我听说Objective-C中的例外是不安全的,不应该用于流量控制.
我能想到的另一种方法是这里使用的方法的一些变化:http://edotprintstacktrace.blogspot.com/2011/10/sample-webscriptobject-javascript.html
换句话说:1.用于evaluateWebScript定义实现的JavaScript函数Object.keys2.在您的WebScriptObject3. 上调用该函数迭代返回的键数组,并且只有valueForKey在找到匹配项时才调用.
对我来说,这看起来非常低效.必须有更好的方式......有吗?