Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome Chrome textarea错误-当目录=”时;“自动”+;占位符+;使用右/左箭头的1个rtl字符挂起chrome_Google Chrome_Chromium_Placeholder_Right To Left - Fatal编程技术网

Google chrome Chrome textarea错误-当目录=”时;“自动”+;占位符+;使用右/左箭头的1个rtl字符挂起chrome

Google chrome Chrome textarea错误-当目录=”时;“自动”+;占位符+;使用右/左箭头的1个rtl字符挂起chrome,google-chrome,chromium,placeholder,right-to-left,Google Chrome,Chromium,Placeholder,Right To Left,您可以在导致chrome挂起的场景中看到,唯一绕过它的方法是关闭选项卡。 这也发生在我的一个电子项目中,所以这不是特定于chrome的 复制步骤: 1.有一个带有dir=“auto”的文本区域,一个占位符和一个希伯来语字符 2.聚焦文本区域并点击左右箭头 3.铬永远挂着 <textarea dir="auto" cols="5" rows="3" placeholder="write something">ע</textarea> ע 很高兴听到关于在谷歌修复之前绕过

您可以在导致chrome挂起的场景中看到,唯一绕过它的方法是关闭选项卡。
这也发生在我的一个电子项目中,所以这不是特定于chrome的

复制步骤:
1.有一个带有dir=“auto”的文本区域,一个占位符和一个希伯来语字符
2.聚焦文本区域并点击左右箭头
3.铬永远挂着

<textarea dir="auto" cols="5" rows="3" placeholder="write something">ע</textarea>
ע
很高兴听到关于在谷歌修复之前绕过这个bug的想法(报道)

编辑
问题甚至比我想的更糟,如果你有一个占位符,如果dir=“auto”并且英语字符串中有一个希伯来语字母,当你到达希伯来语字母时,用箭头导航将使chrome崩溃(你可以粘贴d•d并查看)。
如果添加两个希伯来语字母(如aaa••bbb)并使用箭头导航,它不会崩溃,但会表现得非常奇怪,在希伯来语字母之间输入某种光标循环
请在这里标记这个错误

编辑2
chromium团队修复了该错误,并且该修复已在Canary上进行:)

编辑3 修复程序现在在Chrome 52上运行,您可以使用它检查Chrome变量并禁用左箭头键

我选择的“解决方案”是在未按下shift键且文本区域包含rtl字符时禁用左箭头键。 在这里更新了代码

代码如下:

var rtlPattern =/[\u0590-\u085F,\u08A0-\u08FF,\uFB1D-\uFEFF]|\uD802[\uDC40-\uDFFF]|\uD803[\uDC00-\uDCFF]|\uD803[\uDE60-\uDE7F]|\uD83B[\uDE00-\uDEFF]/;    
$(document).on("keydown","textarea",function(event){
   if (!event.shiftKey && (event.keyCode === 37))
   {
     if(this.value && rtlPattern.test(this.value))
     { 
       event.preventDefault();
     }
   }
});
通过以下方式获得此模式:

//Unicode Ranges
// \u0590-\u05FF Hebrew
// \u0600-\u06FF Arabic
// \u0700-\u074F Syriac
// U+0750-U+077F Arabic Supplement
// U+0780-U+07BF Thaana Letter Paviyani
// U+07C0-U+07FF NKo
// U+0800-U+083F Samaritan
// U+0840-U+085F Mandaic
//--------------------
// U+08A0-U+08FF Arabic Extended-A
//--------------------
// U+FB1D-U+FB4F Alphabetic Presentation Forms  (part of it)
// U+FB50-U+FDFF Arabic Pres. Forms-A
// U+FE70-U+FEFF Arabic Pres. Forms-B
//--------------------
// U+10840-U+1085F Imperial Aramaic
// U+10860-U+1087F Palmyrene
// U+10880-U+108AF Nabataean
// U+108E0-U+108FF Hatran
// U+10900-U+1091F Phoenician
// U+10920-U+1093F Lydian
// U+10980-U+1099F Meroitic Hieroglyphs
// U+109A0-U+109FF Meroitic Cursive
// U+10A00-U+10A5F Kharoshthi 
// U+10A60-U+10A7F Old South Arabian
// U+10A80-U+10A9F Old North Arabian
// U+10AC0-U+10AFF Manichaean
// U+10B00-U+10B3F Avestan 
// U+10B40-U+10B5F  Inscriptional Parthian
// U+10B60-U+10B7F Inscriptional Pahlavi
// U+10B80-U+10BAF Psalter Pahlavi
// U+10C00-U+10C4F Old Turkic 
// U+10C80-U+10CFF Old Hungarian
// the top range is calculated by https://github.com/mathiasbynens/regenerate :
//  console.log(regenerate().addRange(0x10840,0x10CFF).toString());
//  > \uD802[\uDC40-\uDFFF]|\uD803[\uDC00-\uDCFF]
//-----------------------------------------
// U+10E60-U+10E7F Rumi Numeral Symbols
//  console.log(regenerate().addRange(0x10E60,0x10E7F).toString());
//  > \uD803[\uDE60-\uDE7F]
//-----------------------------------------
// U+1EE00-U+1EEFF Arabic Mathematical Alphabetic Symbols
//  console.log(regenerate().addRange(0x1EE00,0x1EEFF).toString());
//   > \uD83B[\uDE00-\uDEFF]