Chromeを既定のブラウザにできない理由
Google Chromeは、IEに比べてはるかに高速で良いのですが、Google Chromeを既定のブラウザにはしていません。
その一番の理由は、文字列のコピー&ペーストで、余分なスペースや改行が付いてしまうことです。
認証が必要なWebサイトのID管理には、MyHome PortalのID管理を使っていますが、IDやパスワードをコピーする時に、英数字混在&記号交じりの文字列をコピーするために、トリプルクリックを使いますが、Google Chromeでは、なぜか元の文字列に存在しないスペースや改行が付いてしまいます。
MyHome PortalのID管理では文字列は、コピー&ペーストしやすいように<table><tr><td>で囲んでいますが、Google Chromeではペースト先にスペースや改行が入ってしまいます。
<div>や<span>で囲んでも駄目です。IEでも<div>や<span>では余分な範囲を選択してしまいます。
下にサンプルを載せました。Google Chromeで試してみてください。
改善策をご存知の方、教えてください。
<table><tr><td>abc@123#xyy</td></tr></table><div>abc@123#xyy</div>
<span>abc@123#xyy</span>
【table】
abc@123#xyy |
【div】
【span】
abc@123#xyy
【2010/3/5 追記】
※この問題は、Livedoor KnowledgeにてBLUEPIXYさんから素晴らしい解決策をいただきました。
http://knowledge.livedoor.com/44359
【2010/3/8 追記】
Ver.2.62でこれを適用しましたが、Firefoxでは不具合が発生することが判明。Ver.2.63でChromeのみ、このoncopy処理を適用するようにしました。
http://ok2nd.blog87.fc2.com/blog-entry-203.html
BLUEPIXYさんからの解決策を転載させていただきます。
oncopyを使って以下のスクリプトで処理します。
<head>~</head>に、
<script type="text/javascript">function copy(e){
var text = window.getSelection()+"";
text=text.replace(/(.+)\s*/,"$1");
input = document.createElement("input");
input.hidden = true;
input.value = text;
document.body.appendChild(input);
input.select();
try {
success = document.execCommand("copy", false, null);
} catch (ex) {
success = false;
} finally {
document.body.removeChild(input);
}
return false;
};
</script>
body 部分で、oncopy にcopy() を割り付け
<table oncopy="copy(event);return false"><tr><td>abc@123#xyyz</td></tr>
</table><br />