]>
Copy-Paste for Nintendo DSi Browser
DSiブラウザー (Opera 9.50) で
には コピーペースト機能がついていません。
ので、それを専用ページとブックマークレットで無理やり実装したものです。
$Id: copypaste.html,v 1.7 2014-05-21 11:48:27+09 kabe Exp $
▼使用方法
事前準備
- コピー用補助リンク
をクリックします。
エラーが出ますが、かまわず ★お気に入り に追加し、
「編集」にてURLの"opera:"を削ります。
「エラーが発生しました」名前は「コピー」とでもしておきます。
このブックマークレットがコピー機能になります。
コピー
- コピーしたいテキストを選択して、
上で作ったコピー用ブックマークレットを起動すると、
サンプル画面のようなコピーペースト編集画面に移行します。
コピーしたいテキストの選択方法
- ベタテキスト:タッチペンのドラッグで範囲選択
- <TEXTAREA>全体 (書きかけの掲示板の書き込みなど) :そのTEXTAREAを
選択。LRボタン+十字キーで可能です。
- リンク先のURL:そのリンクをLRボタン+十字キーで選択
編集画面になったら、コピーしたテキストを編集ボックスの既存テキストの
上にペーストするか下にペーストするかを
[Paste to Top] [Paste to Bottom] ボタンで選択します。
編集
- Edit buffer(編集ボックス) を普通に編集できます。
ただしコピーペーストはできません。(だからみんな困ってる)
- 複数の他ページからテキストを集めてくる等、編集ボックスの内容を
保持したい場合は [Save] ボタンを押します。
ペースト
- [Create Pastelet]で、編集ボックスの中身を他へペーストする
ブックマークレットを作成します。クリックするとエラーになりますが、
★お気に入り に追加し、「編集」にてURLの"opera:"を削ります。
これが Pastelet ブックマークレットになります。
- ペーストしたいページに移動し、ペーストしたいテキストボックスを
LRボタン+十字キーで選択します。
- Pastelet を起動します。編集ボックスの内容がテキストボックスに追加されます。
- Pasteletはもうお気に入りから消してもかまいません。
編集画面に戻る
- 何も選択せずに コピー用ブックマークレットを起動すれば、
クリップボードが "undefined" になりますが、編集画面に戻れます。
[Save]で内容を保持していれば編集ボックスの中身もそのままです。
▼使用上の注意
- (長さ制限) ブックマークレットの「編集」の制限で、ペーストできる文字列は
1000文字あたりに制限があります。
編集ボックスの編集自体はもっと長くても可能ですが。
- (セキュリティ) 編集ボックスの中身はCookieとして保存しますので、
こちらのWebサーバーのログからは見えてしまう
場合があります。あんまり重要な情報は扱わないことを推奨します。
編集画面自体はただの
単一HTML ファイルなので、
自分でWebサーバーを持っている方は自分用にコピーして使うこと推奨します。
▼バグらしきもの
内部的にFRAMEやタブでで別ウィンドウを表示している
(DSiブラウザ─上ではわからない)所での
テキストボックスやリンクを選択→コピー、しようとしても、
そのFRAMEを出したリンク元がコピーされてしまう。
たぶん document.activeElement のバグ。
対処法:一旦、右下ボタン→「www アドレス入力」→[移動] (編集は不要)で、
FRAME状態を解除する。
2ch.netがこの構造なので困ったもんです(どっちが?)
▼開発メモ
コピーペーストでデータを保持する クリップボード とか ヤンクバッファ
といったものは OS とかデスクトップ環境が用意するものですが、
DSiブラウザにはそういうものがないのでコピーペーストができません。
(追加実装するのはそんなに難しくなかったはずですが…)
じゃあコピーペーストに代わる方法として何が使えるか。
DSi的には発想の転換で、「コピーペーストが欲しい」ではなく、
「コピーペーストの結果、結局何をしたいのか」を総合的に考えます。
例えば、「今見てるウェブページのタイトルとURLをtwitterに書き込みたい」
のであれば、そういうブックマークレットを作る、ようにするのが正しそうです。
「リンク先のURLを確認、編集、ジャンプしたい」のであれば
そういうブックマークレットを作ります。
これは普通のプログラミングの考え方の逆
(手順要素の分解ではなく、総合)
なので、プログラマー肌の人(自分とか)には苦手の考え方ではあります。
それでもやっぱり汎用のコピーペーストが使いたいことはある。どうするか。
複数のウェブページをまたいでデータを保持できるモノは、
DSiブラウザではCookieとブックマークしかありません。ので、
クリップボードとペースト機能はブックマークレットを使うしかない。
Cookieを使うとなると、ウェブページと関連付ける必要があります。
ブックマークレット単体では実現できません。ので、
専用ページを設けて実現することになりました。
専用ページだとブックマークのスクリプト1000文字制限から開放されるので
だいぶ作りやすくはなります。
(複数のページをまたいでの編集バッファの保持を放棄すればブックマークレット
でも実現できそうですが、すごい使い勝手が悪くなりそう)
かべ@sra-tohoku.co.jp