手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2018年04月的文章

Safari 11.1: ajax/XHR form submission fails when input[type=file] is empty

有时候真不知道苹果都在做些什么。。这次safari的更新会导致 form在使用xhr提交的时候,如果表单里有<input type="file" />但没有选择文件,这时候表单就提交失败了,本文的标题就是stackoverflow上面的人提出的问题。
大部分奇技淫巧(或者说奇巧淫技)都是说,如果判断input type=file,如果length==0,即没有选择文件,就先将它disable掉,然后new FormData后,再将它恢复。
 
原文看这里,提供了两个解决方案,一个是用jquery的,一个是不用的:https://stackoverflow.com/questions/49614091/safari-11-1-ajax-xhr-form-submission-fails-when-inputtype-file-is-empty
 
用JQuery:
JavaScript代码
  1. var $form = $('form')  
  2. var $inputs = $('input[type="file"]:not([disabled])', $form)  
  3. $inputs.each(function(_, input) {  
  4.   if (input.files.length > 0) return  
  5.   $(input).prop('disabled'true)  
  6. })  
  7. var formData = new FormData($form[0])  
  8. $inputs.prop('disabled'false)  
 
 
不用:
JavaScript代码
  1. var form = document.querySelector('form')  
  2. var inputs = form.querySelectorAll('input[type="file"]:not([disabled])')  
  3. inputs.forEach(function(input) {  
  4.   if (input.files.length > 0) return  
  5.   input.setAttribute('disabled''')  
  6. })  
  7. var formData = new FormData(form)  
  8. inputs.forEach(function(input) {  
  9.   input.removeAttribute('disabled')  
  10. })  
 
为什么safari还不更新????
更详细 更多的回复,直接看原文吧
 
 

“恼羞成怒”与“老羞成怒”的辨析

小孩在背书的时候,突然读到了老羞成怒,原以为是小朋友L和N不分,结果一看确实是老羞成怒,google了一下,原来是有下列的解析,原文来自:http://blog.sina.com.cn/s/blog_513bad040100c950.html
 
 
钱钟书的《读〈伊索寓言〉》中有句这样的话:“这只乌鸦借来的羽毛全给人家拔个干净,现了原形,老羞成怒……”有学生向我提出,这个“老羞成怒”应写成“恼羞成怒”,是不是这样呢?
 
《现代汉语成语规范词典》将“恼羞成怒”注解为“由于气恼、羞愧而发怒”,并明示不要写成“老羞成怒”。但在《新编汉语词典》中将两个词语全部并入了语汇条款中,只是“恼羞成怒”一词有注解,而“老羞成怒”一词没有注解。较为详尽的当属《汉语大词典》,它将“恼羞成怒”一词注解为“因烦恼羞愧到了极点而发怒”,将“老羞成怒”一词注解为“因恼恨羞愧而发怒”。并各自有了例句。现各举两例:
 
恼羞成怒:1、冒得官见他如此说法,不禁恼羞成怒,喝令左右:“替我赶他出去!”(《官场现形记》第三十回)
 
2、那排长恼羞成怒,拿着枪头的刺刀,向哥哥的手臂上扎了一下。(冰心《去国·斯人独惟悴》)
 
老羞成怒:1、想因却蔹一事,太激烈了,故此老羞成怒耳。(清·孔尚任《桃花扇》)
 
2、张志让律师当日为沈老先生的辩护人,不知说了多少直率的话那检察官居然老羞成怒,大发雷霆。(邹韬奋《患难余生记》第一章)
 
由此可见,两个词语应该是可以通用的。从《现代汉语大词典》(规范用法)“恼羞成怒”注解后的说明:“‘恼羞成怒’也说‘老羞成怒’”中也可说明这一点。
 
那么这两个词语有没有区别呢?
 
据《辞海》的解释:“恼”有三个义项:①恨、怒 ②忧愁、苦闷 ③病痛。“恼羞成怒”这个词语很显然用的是第一个义项。据《现代汉语词典》的解释:“老”有十七个义项,其中的第十四个义项是“很、极”。因此,较为正确的解释应当是:
 
恼羞成怒:因恼恨羞愧而导致发怒。其中““恼”跟“羞”一样是形容词,属于并列结构。
 
老羞成怒:因羞愧到了极点而发怒。其中“老”属于副词,来修饰“羞”,意思是“极端羞愧”、“很羞愧”。

Yii2自定义组件在phpstorm中识别

 有时候你会在Yii2中自定义一些组件,比如:Yii::$app->sms / Yii::$app->chat / Yii::$app->queue(你看,这个虽然是系统自带的,但不代表就能被认得出)

那怎么办?IDE无法认出的时候,难道我们一个个的写:

PHP代码
  1. <?php  
  2. /** @var IM $im */  
  3. $im = Yii::$app->im;  

如果是这样,那也太累了。翻了一下google,找到这一篇教程:https://github.com/samdark/yii2-cookbook/blob/master/book/ide-autocompletion.md,意思就是说,你自己建一个Yii的文件,创建一些类,然后把刚才的Yii::$app->sms之类的,注释成类的property,然后IDE就能识别了。

最后找到一个项目:https://github.com/iiifx-production/yii2-autocomplete-helper,看样子好象一位俄罗斯大佬写的,嗯,它自动根据你的config来生成一个类似的_ide_components.php,并建议你在IDE里将Yii.php设置为:Mark As Text,这样IDE就不会主动去读Yii.php并识别了。

于是我composer引用了并执行了一下。然后在.gitignore里忽略了_ide_components.php,感觉世界一下子清静多了。

简单用法:

PHP代码
  1. 'bootstrap' => ['log''autocomplete'],  
  2. 'components' => [  
  3.     'autocomplete' => [  
  4.         'class' => 'iiifx\Yii2\Autocomplete\Component',  
  5.         'config' => [  
  6.             '@app/config/console.php', # <-- config list  
  7.             '@app/config/web.php',  
  8.         ],  
  9.     ],  
  10.     # ...  
  11. ]