[2024å¹´4æ25æ¥ è¿½è¨] Safariã®åä½ã«ã¤ãã¦èæ ®æ¼ããããã¾ããã®ã§ãä¸é¨è¿½è¨ã»ç·¨éãã¾ããã
æ°å®¿ã«ãªãã£ã¹ã®ããClassiã¯ã岡山å¨ä½ã®ç§ã®ãããªå°æ¹å¨ä½è ã ãã§ãªããããããéå¤åå ã«å¨ä½ãã¦ãã¦ããªã¢ã¼ãã¯ã¼ã¯ã§åãã¦ãã人ãå¤ãä¼ç¤¾ã§ããå¿ ç¶çã«ãã¼ãã£ã³ã°ã¯ãããããªã³ã©ã¤ã³ãã¼ãã£ã³ã°ã¨ãªãã主ã«Google Meetãå©ç¨ããã¦ãã¾ãã
ãã®Google Meetã®ãã£ããæ©è½ããã1é±éããããIMEã§æ¥æ¬èªã«å¤æã®ããã«æ¼ãã¨ã³ã¿ã¼ãã¼ã§éä¿¡ããã¦ãã¾ããã¨ããç¾è±¡ãçºçãã¦ãã¾ãããã®ã¨ã³ããªã¼ãèªã¾ãã¦ããæç¹ã§ã¯å¯¾å¿ãã¦ããããç¥ãã¾ãããã2024å¹´4æ22æ¥17ææç¹ã§ã¯ãã®ç¾è±¡ã¯ç¶ãã¦ãã¾ãï¼Windowsã§ã¯åç¾ããªãã¨ããæ å ±ãããã¾ãï¼ã
ã¨ã³ã¿ã¼ãã¼ã«é ¼ããªãæ¥æ¬èªå ¥åãé å¼µãã¾ããããæçã¨ããã®ã¯æããªããã®ã§ã
ãã®ç¾è±¡ã¯ãGoogle Meetã«éãããã¾ãã¾ãªã¦ã§ããµã¼ãã¹ã§çºçãã¦ãã¾ããChatGPTã話é¡ã«ãªã£ã¦ãããã°ããã¯ãã®ãããªæåã§ãããæ¥æ¬ãæ±ã¢ã¸ã¢åãä¸å¿ã«ãIMEãå©ç¨ãã¦ããã¦ã¼ã¶ã¼ããã®ãã£ã¼ãããã¯ã§ãããã¯å¯¾å¿ãããã¨å¾ ã¤ã®ãåºæ¬ã§ãããæ®æ®µã®æ¥åå©ç¨ã絡ãã§ããã®ã§å¯¾å¿çãæ´çãã¾ããã
ããããã¯ä½æãããã¢ã«åºã¥ãã¦é²ãã¦è¡ãã¾ãã
ãå ¥åæ¬ãã§æ¥æ¬èªå¤æãè¡ã£ã¦ç¢ºå®ã®ããã«ã¨ã³ã¿ã¼ãã¼ãæ¼ãã¨ä¸ã«åæ ãããç¶æ ãåç¾ãã¦ãã¾ãããã®å¾ããIMEå¤æä¸ã®éä¿¡åæ¢ãã¨æ¸ããããã¿ã³ãæ¼ãã¨ãå¤æ確å®ã®ã¨ã³ã¿ã¼ãã¼ã§ã¯åæ ãããªããªãã¾ãããå¤æãè¡ã£ã¦ããªãã¨ãã®ã¨ã³ã¿ã¼ãã¼ã«ã¯åå¿ãã¾ãã
対å¿æ¹æ³
åºæ¬çãªå¯¾å¿ã®æ¹éã¯ä»¥ä¸ã§ãã
ãã¤ãã³ããã£ããã£ã§ãã¡æ©ãIMEå¤æä¸ã®ã¨ã³ã¿ã¼ãã¼å ¥åãææãã¦ä¼æãããªãããã«ããã
ãããå®è£ ããã®ãä¸è¨ã®ã³ã¼ãã§ãã
document.addEventListener('keydown', function(event) { if ((event.key === 'Enter' && event.isComposing) || event.keyCode === 229) { event.stopPropagation(); } },{capture: true});
ãã¤ãã³ããã£ããã£ã§ãã¡æ©ãã
addEventListener
ã®ç¬¬3å¼æ°{capture: true}
ããã®å®è£
ã§ãããã®ãªãã·ã§ã³ã§captureãæå¹ã«ããã¨ãkeyDownã¤ãã³ãã®ä¼æãã¿ã¼ã²ãããã親æ¹åã®ãããªã³ã°ã§ã¯ãªããããã¥ã¡ã³ãããã¿ã¼ã²ããã«åãããã£ããã£ã¨ãªããã¾ãã¯documentãkeyDownã®çºç«å¯¾è±¡ã«ãªãã¾ãã
åèï¼
ãIMEå¤æä¸ã®ã¨ã³ã¿ã¼ãã¼å ¥åãææã
(event.key === 'Enter' && event.isComposing) || event.keyCode === 229
ã®æ¡ä»¶å¼ããã®å¤å®ã§ãã
event.key === 'Enter'
ã¯keyDownããããã¼åãevent.isComposing
ã¯IMEå¤æä¸ã§ããã°trueã«ãªãã¾ããã¾ããSafariã®æåã¸ã®å¯¾å¿ã¨ãã¦éæ¨å¥¨ããããã£ã§ããevent.keyCode === 229
ãå ãã¦ãã¾ããkeyCodeã®229ã¯ãIMEã«é¢é£ããkeyCodeã¨ãã¦å®ç¾©ããã¦ãã¾ãããã®æ¡ä»¶ã«åã£ãå ´åãæ¥æ¬èªå¤ææã®ã¨ã³ã¿ã¼ãã¼ã¨å¤æããå¾è¿°ã®event.stopPropagation()
ã§åè¦ç´ ã«å¯¾ãã¦ã®ä¼æ¬ãä¸æ¢ãã¾ãã
åèï¼
- KeyboardEvent: isComposing ãããã㣠- Web API | MDN
- Element: keydown ã¤ãã³ã - Web API | MDN
ãä¼æãããªãããã«ããã
event.stopPropagation()
ããã®ã¡ã½ããåã®éãä¼æ¬ãæ¢ãã¾ããdocumentã®æ®µéã§ä¼æããªãããã«ãããã¨ã§ãéä¿¡ã®ã¤ãã³ããç¨æããã¦ããinputãã£ã¼ã«ãã«ã¨ã³ã¿ã¼ãã¼ã®å
¥åãä¼ãããªãããã«ãªã£ã¦ãã¾ãã
åèï¼
ããã¾ã§ããIMEå¤æä¸ã®ã¨ã³ã¿ã¼ãã¼ã§éä¿¡ããããã¸ã®å¯¾å¿ã®åºæ¬ã§ãã
ã©ããã£ã¦ç¨¼åä¸ã®ã¦ã§ããµã¼ãã¹ã«é©ç¨ãããï¼
対å¿æ¹æ³ã®JavaScriptãããã¨ãã¦ä¾ãã°Google Meetã§å°ã£ã¦ããå ´åãã©ãããã°è¯ãã§ããããï¼ãã£ã¼ãããã¯ãéã£ããããªã¼ãã³ã½ã¼ã¹ã§ããã°PullRequestãéã£ããã¨ãã対å¿ãæãæµ®ãã³ã¾ããããä»ãããã®è§£æ±ºçã¯æå ã®ãã©ã¦ã¶ã«ä¸è¨ã®JavaScriptãé©ç¨ãããã¨ã§ãã
DevToolsã®ã³ã³ã½ã¼ã«ã§å®è¡ãã
ä¸è¨ã®ã³ã¼ããDevToolsã®ã³ã³ã½ã¼ã«ç»é¢ã§å®è¡ããã¨ãã³ã¼ãã®å 容ãé©ç¨ããã¾ãã該å½ã®ãµã¼ãã¹ã«ã¢ã¯ã»ã¹ãã度ã«å®è¡ããå¿ è¦ãããã¾ãã
ããã¯ãã¼ã¯ã¬ãããä½æãã
ä¸è¨ã®ã³ã¼ãã¯ããã®è¨äºã§ç´¹ä»ãã¦ããJavaScriptãããã¯ãã¼ã¯ã¬ããã§å©ç¨å¯è½ã«ãããã®ã§ããããã¯ãã¼ã¯ã¨ãã¦ç»é²ãã¦ããã¨ãå¿ è¦ãªæã«å¼ã³åºãã°ä»¥éã¯é©ç¨ããã¦ãã¾ãããã¡ãã該å½ã®ãµã¼ãã¹ã«ã¢ã¯ã»ã¹ãã度ã«å®è¡ããå¿ è¦ãããã¾ãããããã¯ãã¼ã¯ãå¼ã³åºãã ãã§ãã
javascript:(function()%20%7Bdocument.addEventListener('keydown'%2Cfunction(event)%7Bif((event.key%3D%3D%3D'Enter'%26%26event.isComposing)%7C%7Cevent.keyCode%3D%3D%3D229)%7Bevent.stopPropagation()%7D%7D%2C%7Bcapture%3A%20true%7D)%7D)()
ãã®ããã¯ãã¼ã¯ã¬ããã®ã³ã¼ãã¯ååã®@koki_developãä½æããBookmarklet.linkãå©ç¨ãã¦çæãã¾ããã
æ¡å¼µæ©è½ã使ã
ä¸è¨ã®JavaScriptã®ä½ç¨ãçµã¿è¾¼ãã æ¡å¼µæ©è½ãå©ç¨ããã°ãã¢ã¯ã»ã¹ãã度ã«è¡ãã¨ãã£ãé¢åããªãé©ç¨ã§ãã¾ããä¼¼ããããªã±ã¼ã¹ã§ãChatGPTåãã®ãå¤æä¸ã®ã¨ã³ã¿ã¼ãã¼ã§éä¿¡ãããã®ãé²ããæ¡å¼µãæ£è¦ããè¨æ¶ãããã¾ãã
åé ã§è©±é¡ã«ããGoogle Meetã ã¨ãGoogle Meet Chat to Clipboardã¨ããæ¡å¼µæ©è½ãå æ¥é ä¿¡ãã4.2.0ã§ãå¤æä¸ã®ã¨ã³ã¿ã¼ãã¼ã§éä¿¡ãããã®ãé²ããæ©è½ãçµã¿ã¾ããããã®è¨äºã§ç´¹ä»ããç§ä½æã®æ¡å¼µæ©è½ã§ããããã¼ã¿ã®å¤é¨éä¿¡ãªãããã¡ã¤ã«ã®ã¢ã¯ã»ã¹ããªããã¯ãªãããã¼ãã«å ¥ããã ãã®æ¡å¼µæ©è½ã§ãã®ã§ãæ¯éå©ç¨ãã¦ã¿ã¦ãã ããã
æå¾ã«
ä»ç¾å¨ï¼2024å¹´4æ22æ¥17æï¼å°ã£ã¦ããã®ã§Google Meetãé¡æã«ãã¾ãããã欧米ä¸å¿ã§éçºããã¦ããã¦ã§ããµã¼ãã¹ã«ã¯ãã¾ã«ãããã¨ã§ãã対å¿ãããã®ãå¾ ã¤ã®ãåºæ¬ã ã¨æãã¾ãããã¯ã©ã¤ã¢ã³ãï¼ãã©ã¦ã¶ï¼ã§æã¦ãæã¯ããã¾ãããã¨ããç´¹ä»ã§ãããåèã«ãªãã°å¹¸ãã§ãã