Home / Diary / タグ: opera
ahkで作ってみたけど、JavaScriptで選択範囲のソースを取得できることをすっかり忘れてた。
get n go selection links
こっちのほうがいいな、うん。
ただ、こっちだとaやimg等の要素の属性しか見ていないようなので、テキストノードも見ることができるのを作った。ノードだけ見るか、テキストだけ見るか、両方見るか、の3通りで開きまくれるように。
使い方は一緒で、まずユーザースクリプトディレクトリにopenselectionurl.jsを入れたらmenu.iniの[Hotclick Popup Menu]に以下の項目を追加。
Item, "選択範囲内の全てのリンクを開く" = Go to Page, "javascript:openSelectionURL( 'node' )"
Item, "選択範囲内のリンクされていない全てのURLを開く" = Go to Page, "javascript:openSelectionURL( 'text' )"
Item, "選択範囲内のURLを全て開く" = Go to Page, "javascript:openSelectionURL( 'both' )"
これで右クリックからURLを開きまくれる。
リンクされていないURLについては、最低限スラッシュ2つかwwwで始まっていればURLと見なすようにした。また、wikipediaについてはURLに日本語が使われていても認識するようにした。
このスクリプトの弱点はポップアップブロックにひっかかってしまうことか。
先日作ったahk版ならコマンドラインから渡すのでポップアップブロックに引っ掛からないという利点がある。テキストのみahk版で処理するのもアリかも知れない。
Info
- 投稿日
- 2007年1月12日
- タグ
- opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1503.html
- ブックマークに追加する
-
- コメント
2007
0112
Tagsopera
http://www.google.co.jp/
ttp://search.yahoo.co.jp/
://search.msn.co.jp/
こーいったリンクされていないURLをまとめて開きたい。
ただ単に選択テキストをコピーしてahkに渡しつつ、正規表現でURLっぽいのをゲットして、そのままOperaにコマンドラインで渡せばできね?
と思ったら、渡した分だけウインドウが作られてしまった。現在開いているOperaに新しいタブとして追加させるにはDDEで渡すしかないっぽいが、AutoHotKeyでDDEを扱う方法が分からなかったので、力技でやることにした。
;menu.ini
[Hotclick Popup Menu]
Item, "選択テキスト内のURLを全て開く" = Copy & Execute program, "C:\ahk\AutoHotkey.exe", "C:\ahk\openallurl.ahk"
;openalllink.ahk
#NoTrayIcon
lines := RegExReplace( Clipboard, "(`r`n)+", "`r")
Loop, parse, lines, `r,
{
match_result := RegExMatch( A_LoopField, "t?p?s?:?//([-_.!~*'()a-zA-Z0-9;/?:@&=+$,`%#]+)", $ )
If match_result != 0
{
Clipboard = http://%$1%
wait( 10 )
Send, {LCtrl Down}t{LCtrl Up} ;新しいタブ
wait( 40 )
Send, {LCtrl Down}b{LCtrl Up} ;貼り付けて移動
wait( 40 )
}
}
wait( time ) {
begin := A_TickCount
Loop
{
if A_TickCount - begin > time
break
}
}
何をしているのかというと、選択テキストを改行で分解してURLっぽいのをゲット。ここまでは良い。その後は・・・
- ゲットしたURLをクリップボードに入れる
- 強制的にCtrl+Tを発生させて新しいタブを表示させる
- 強制的にCtrl+Bを発生させてクリップボード内のURLを貼り付けて移動させる
- 1~3を繰り返す
こんなんで本当に大丈夫なのか? と思ったが、どうやらCPUを他に取られていると新しいタブの生成や貼り付けてからの移動で微妙に時間を取ってしまい、次の入力がズレてしまう時があったのでwaitを入れることにした。上手く開かない時はwaitの数字を大きく設定する。waitがちゃんと入っていればしっかり開かれるようだ。
正規表現はPerlメモから拝借した。非リンクだけじゃなくh抜き等にも対応するため、最低限スラッシュ2個さえあれば反応するようにしてる。そこら辺で不都合があるなら適当に弄るといいだろう。
openallurl.ahk
追記1
選択範囲のソースを取得できることをすっかり忘れてた。というわけでJavaScriptで全て解決するっぽいのでがんばる。
一応ahk経由だとポップアップブロックが発生しないというメリットが一応あるんだがな。そこら辺は使う人次第か。
追記2
渡した分だけウインドウが作られたって書いたけど、設定を良く見たらSDIにチェックが入っているせいだった。チェック外してみたところ、コマンドラインでも普通にタブが開いた。
Info
- 投稿日
- 2007年1月10日
- タグ
- ahk、opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1502.html
- ブックマークに追加する
-
- コメント
2007
0110
Tagsahkopera
FirefoxとOperaには、通常のオプションでは設定できない細かい設定を行う為の措置が施されていて、Firefoxならabout: config、Operaならopera:configとアドレス欄に入れて移動するだけで、簡易的だが各種設定を行うことができる。
設定できるといっても、名前から判断できない項目がズラっと羅列されるだけで、設定したい対象を予め調べなければいけないので手間がかかってしまう。
Operaの場合、Opera6.ini の設定 なんてページが用意されているので、ある程度は内容を把握することができる。が、それでもタブを2つ並べて両方見比べるといったことが必要になるので面倒には変わらない。(余談だが、.comの方はちゃんとopera:configの該当項目へのリンクが張ってあるのでいくらかマシだったりする。)
Operaが流行らない理由の一つである、できることが多すぎて思考停止する理由の一つが、このopera:configの無愛想っぷりだと前々から判断していたので、この状況を打開すべくopera:configを拡張することにした。
スクリーンショット
何をしているのかというと、各項目に上記iniのページから説明文を持ってきて、埋まっていない部分を独自の解釈と感と気合で埋めて、それぞれを入力欄のそばに表示するようにしている。
これの使い方は、以下のボタンをツールバーに登録して、opera:configを開いた時にポチッっと押す。これだけ。opera6.iniのバックアップは取るように。絶対に。
Opera用ボタン : [OperaConfig+]
とりあえず動いている状態なので、細かい作りこみは徐々に行う予定。
- ビットフィールドをチェックボックスに
- カラーコードをカラーテーブルから設定
- フォント及びカラーをプレビューしながら設定
- 設定項目の再構成
- 空白部分は上記ページの更新待ち
- 一部項目が正しく保存されてないっぽい?
- iniを直接弄るしかなかった項目も設定できるように
こなかじ。ああ、デフォルトに戻すボタンもつけてないな。忘れてただけだが。
あと、せっかくなんで、Opera6.ini の設定を.com仕様するユーザースクリプトも作っておいた。日本語じゃないと死んでしまう人は活用するといいだろう。
jpopera6ini.user.js
使用上の注意
このボタンはうちのサーバーに置いているファイルにアクセスしているわけだが、できるだけダウンロードして中身を確認した上で、自分のサーバーに置いて使うことを薦めておく。
operaconfigplus.js
急にファイルを消すかわからんし。使う場所がopera:configなだけに、いつjavascriptの暗黒面に落ちてアレゲなスクリプトを仕込むかもわからんし。
あと、このスクリプトを使って何か起きたとしても責任を取るつもりは一切無いのでよろしく(いつもだけど)。
関係無いけど
ツールバーのカオスっぷりが酷い。
Info
- 投稿日
- 2006年12月9日
- タグ
- opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1488.html
- ブックマークに追加する
-
- コメント
2006
1209
Tagsopera
;UserJSディレクトリ(最後のバックスラッシュを除く)
ScriptDir = C:\Opera\profile\script
URL = %1%
FileName := RegExReplace( URL, ".*/", "" )
IfExist, %ScriptDir%, IfInString, FileName, .js
URLDownloadToFile, %URL%, %ScriptDir%\%FileName%
スクリプトの内容はこれだけ。後はExecute Programから%lの引数付きで渡すだけでUserJSをインストールすることができる。
引数からダウンロードディレクトリを指定してもよかったが、半角空白が混じっていると厄介なので、あえてスクリプト側に記述するようにした。
UserJSに限らず、ただ単にファイルをダウンロードしているだけなので、分岐してやれば拡張子ごとに保存フォルダを変えるなんてことも可能。
installjs.ahk
Info
- 投稿日
- 2006年11月22日
- タグ
- ahk、opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1485.html
- ブックマークに追加する
-
- コメント
2006
1122
Tagsahkoperauserjs
やってることはopera_exや前のWSHと同様。コマンドライン引数から色々コピーさせている。
前のWSH版は1ファイルで完結していたが、クリップボードに入れる動作が重かった上にキャッシュからタイトルを取得していたのでCPUパワーが有り余っていないと使用するのがキツかった。
その点、AutoHotKeyならプログラム自体がクリップボードを操作できるし、アクティブウインドウのタイトルも取得できるので、opera_ex以上のことを1ファイルで実現することができる。・・・AutoHotKeyを常用している人の場合は、だが。
とりあえず標準でこれだけ搭載。
- ページタイトルをコピー
- タイトルとURLをコピー
- ページのアンカーを作成
- リンクからアンカー作成
- リンクからアンカー作成(参照元付き)
- 選択テキストとURLをコピー
- 選択テキストからページのアンカーを作成
- コードブロックを作成
- 引用
- 引用元を付けて引用
- 改行で順序無しリストを作成
- 改行で順序有りリストを作成
- これらのMarkdown文法バージョン
AutoHotKeyのスクリプトはテキストベースなんで、容易に拡張できるのがポイント。opera_exのように別途テキストファイルを用意する必要も無い。
さらに、Operaから離れるが、このスクリプトはオプション無しで文字を渡すだけで、その文字をクリップボードに入れるようにしているので、WSH等からも利用できるようにしている。
例えばディレクトリ内のファイル一覧をクリップボードに入れたい時なんかは、今までだと裏でIEを起動していたのだが、こっちならコマンドラインから呼び出して終わりなので、圧倒的に処理が早い。
clipboard.ahk
スクリプト内にOperaのmenu.iniに登録する際のサンプルを載せているので、導入する方は参考にして欲しい。スクリプトの改造はAutoHotkeyを流行らせるページを参考にするといいだろう。
Info
- 投稿日
- 2006年11月21日
- タグ
- ahk、opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1484.html
- ブックマークに追加する
-
- コメント
2006
1121
Tagsahkopera
God of War(ゴッド・オブ・ウォー)
うちのエントリだけど、まずこれを開く。一番下までスクロールした後にスペースキーを押すと、次のエントリに移動する。
はてなダイアリーならどこでもいいので、トップページ以外のところを開いて、やはりページ最下部でスペースキーを押すと、次のページへ移動する。
何をしているかというと、head内で次の文書が指定されているならその文書へ、そうでないなら、恐らくページ下部付近にある、いかにも次のページっぽいリンク先へ移動するようになっている(はず)。
最初の例だと、URLは1459.htmlで、次のエントリは1461.htmlなので、URLを見て単純に数字を足しているというわけではないようだ。
Firefoxだったら、わざわざアドオン入れてそーいった類のリンクを表示したり、アクセスキーがあるなら、キーを押すことでエントリの移動を行えるけど、Operaならそーいった事を全く気にせずに、スペースキーで読みながら、そのままの操作で自然と次のページへ移動することができる。ページがheadによるナビゲーションに対応していようがいまいが関係無く。
通常はスクロール。最下部に来ると意味が無いからそのままページ移動にしてしまえ、と。
なんという素晴らしいインターフェース。心洗われました。
補足
前後ページへのリンクすら存在しない、もしくはSUN値が足りないと見られないソースだったりすると、関係ないリンクを表示するなどして暴走するっぽい。
大抵のブログ及びブログツールなら対応していると思われるので、そこら辺は微妙に安心して使える。サイドバーが親の敵のように成長していなければ、だが。
追記
- リンク属性で指定された「次のサイト」を持つ
- リンクになっている文字列が登録されているものと同一のリンクがある
- 認証のページでWand機能にユーザ名とパスワードを登録してある
- 画像ファイルへのリンクがある
Opera解説編 2-10(FastForward & ReWind)
スペースキーの動作=FastForward、でもってこのような優先順位で動作するらしい。
4番の画像ファイルが気になったので試してみたが、ページ内に画像が複数ある場合、スペース連打で次々と画像を読み込んで表示してくれる。それはもう笑っちゃうくらい快適に。
・・・はっ! つまりこーゆーことか!
- ページ内画像が多い程スムーズに閲覧
- デフォルトでセキュリティがガチガチ
Operaはアダr
Info
- 投稿日
- 2006年10月30日
- タグ
- opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1473.html
- ブックマークに追加する
-
- コメント
2006
1030
Tagsopera
ページの更新/中止ボタン
読み込みを中止しているのにさらに中止するわけがなく、更新中に更新したい時などは稀。ならばいっそのこと一緒にしてしまえ、と。これに限らず、自由にトグルボタンを作成できるのは素晴らしい。
ユーザーCSS
「@-moz-document domain」とかの絞込みが不可能なので、サイトというかドメイン毎に設定する必要がある。
これがめんどいので、ユーザースクリプトでドメイン名をbodyあたりにidで付加して、body#domainみたいな感じでCSSを書くのがよろしいのかな?
Operaは画像に弱い?
RSSリーダーでEngadgetあたりを200エントリ開くと、それなりに大きな画像を全て読み込もうとしてCPU使用率がうなぎのぼり。かなりでかい画像はひとつだけでもOperaキラーに。
とにかく画像に弱そうな気配を感じたので、常に画像をOFFにすることにした。あと、メモリキャッシュも多めに。
画像のON/OFF
Firefoxのimageprefでもそうなんだけどさ、img要素だけに適用とかできんのかね。background画像まで持っていかれるとサイトによってはひどいことになる。
あと、非表示にした画像でもサイズ指定されてたらそのサイズで枠を表示して欲しいとか思うわけですよ。widthとか無視してaltテキスト飛び出すのは勘弁してくれ。
JavaScriptのON/OFF
ブックマークレットぐらいは見逃してくれてもいいと思う。ここらへんは細かく設定できるNoScriptのほうが優秀だな。
https
証明書の確認ダイアログが出るのはいいが、セガダイレクトのカゴに入れた後のページで画像がhttps指定されているというトンデモHTMLで構成されており、証明書の確認ダイアログがブラクラの如く出現するので「以降全てを許可/無視」みたいなのが欲しい。
っていうかhttps以前に画像を絶対URLで指定するなとあれほど・・・
Widget
デフォルト動作のD&Dがキャンセルできないっぽい? すげー困ってるんだけど。とりあえずinput要素で対処。
あと、setPreferenceForKeyで設定した値って削除できない? 延々と蓄積されて困るんだが。
ポップアップのブロック
アニメーションやめれ。タブを50個ぐらい開こうとしたとき死ぬかと思った。
ユーザーエージェント
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ja) Opera 9.02
最後が余計。・・・これってバイナリ弄ると直せるのかしらん?
Google Docs & Spreadsheets
youtube寝取るのもいいけど、こっちもサポートしてくれ。
Info
- 投稿日
- 2006年10月17日
- タグ
- opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1467.html
- ブックマークに追加する
-
- コメント
2006
1017
Tagsopera
Operaはiniファイルを弄ることで、右クリックメニューをカスタマイズすることができ、用意されたアクションを記述することでクリップボードを操作することもできる。
が、現在のページのURLだけとか、選択テキストだけとか、画像のURLだけ、といった風にコピーできるものが限定されてしまっているので、タイトル+改行+URLなんて取得は不可能。
使えねー! Opera超使えねー!
そこでopera_exを使うことで、かなり自由なスタイルでURLやらタイトルやらをクリップボードに入れられるわけだが・・・
opera_ex使ったら負けかなと思ってる
なんかねー使いづらいのよねー。テキストファイル用意しなきゃいかんし、ちょっと凝った加工もできないしー。
というわけで、opera_exに頼らずにクリップボードを操作する方法を模索した。
実験1 iframe+flash
右クリックメニューのアクションにjavascriptも記述できるので、iframe生成しつつローカルに保存したsetClipboard.swf仕込み済みHTMLを、取得したい情報をハッシュにまとめつつ開けばいけね?
- 結果
- セキュリティに引っ掛かるので無理。(やる前からわかってたけど)
実験2 新規タブ+flash
openで新規タブにHTML+ハッシュなローカルHTMLを開いてクリップボードに入れつつ即座にclose。
- 結果
- 実験1と同じ理由で無理竜
実験3 WindowsScriptingHostに渡す
渡した先ならIEを操作できるので、クリップボードが使える。これだ!
- 結果
- そもそもOperaからページタイトルが渡せません。本当にありがとうございました。
あー、opera_exってWinAPI使ってタイトルの文字列取ってるんだな。WSHは無理じゃん。
ざんねん! わたしのちょうせんは これでおわtt
%s - ローカルキャッシュのファイル名(フルパス)
Opera7 All Action in Japanese
それだぁぁぁぁぁ!
実験4 WindowsScriptingHostにもっと渡す
URLと一緒にキャッシュのパスも渡し、タイトルはキャッシュのHTMLからtitle部分を抜き出す。
- 結果
- 成功
まさかキャッシュのパスを渡せたなんてねぇ。まさに神の御業だ ブッたまげたがよォォォ・・・
しかもWSHなんで1ファイルで完結しながらJavaScriptやVBやRubyも使えるのでテキストの加工が容易。選択テキストをblockquoteしつつciteにURLとかも可能。
ただ、欠点が。
ひとつは、一瞬、スペック次第では1秒程Operaのフォーカスが離れるてしまう。裏でIEを呼び出しているからなんだが、まあ、これぐらいは。
次が問題で、文字エンコードをADODBに丸投げしていること。ぶっちゃけると、ページ次第ではタイトルに含まれる2バイト文字が化ける。となると自前で文字コードを判別すりゃいいわけだが、ものすごく手間がかかる。
あー、まあ英語圏で使うなら問題無いんでこれでいいや。化けたらソースを表示して自前で取るってことで。
operacopyurl.wsf
Info
- 投稿日
- 2006年9月6日
- タグ
- opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1438.html
- ブックマークに追加する
-
- コメント
2006
0906
Tagsopera
Code Snippetsとはプログラムコードの断片を共有
するサイト。激しく使えるものから使い道に頭を悩めるようなものまで幅広く投稿されてるので暇を見て眺めていたわけだが、このサイトが思いのほか使い辛い。
何が使い辛いってコードが初期状態で展開されてるから、50行近くもあるコードがあると、ページがエラい高さになる。
というわけで、いっちょGreasemonkeyで見やすくしてみようじゃあないか、と思って作ったのがこれ。
codesnippets.user.js
何気にOperaにも対応。コードタイトル右端に展開用のボタンを表示。デフォルトは全部閉じた状態。展開した状態でダブルクリックすると閉じる。折角なんでサイドバーも閉じた。これで大分見やすくなったー。
微妙に手抜きっぷりが見え隠れしているのは、近い将来もっと見やすい形にサイト側が対応するだろうという見通しのものであり、決してめんどくさかった訳ではない。いやマジで。
本当はSleipnirのSeaHorseにも対応させようとしたんだけど
user.js設置する(alert仕込む)
↓
Sleipnir起動
↓
ページ開く
↓
alert出る
↓
user.js弄る(alert消す)
↓
リロード
↓
alert出る
↓
user.js削除する
↓
リロード
↓
alert出る
どうみてもメモリに読み込んでます。本当にありがとうございました。
つーことは、SeaHorse用に作る場合はブックマークレットかSleipnirスクリプトとして作成してから移植するしかないのか。超めんどー。・・・あー、今回はご縁が無かったということで。
んで、コード共有サイトなんだからボタン一発でクリップボードに入れられるようにしたいよな。というわけでflashファイルを利用してクリップボードへコピーしてくれるボタンを生成してくれるようにもしてある。
なんでdataスキームじゃないかというと、どうやらFlashPlayer9になってセキュリティ周りに変更が出たらしく、最小構成のHTMLにembedでdataスキームのsetClipboard.swfを指定したやつを開いても反応しなくなったのよ。というわけでエロい人解決法求む。
ファイル自体はこっちね。OperaかFirefoxを使って、右クリックメニューから保存。適当なURLで繋がる場所にアップロードしたら、スクリプトを開いて「var flashURL」部分にURLを入力すれば機能するようになる。
setClipboard.swf
Info
- 投稿日
- 2006年8月26日
- タグ
- firefox、opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1432.html
- ブックマークに追加する
-
- コメント
2006
0826
Tagsfirefoxoperauserjs
っぽいことをする。
XMLHttpRequestがダメなだけで、iframeを使ってテキスト取得とかは可能。俗に言うIFRAMEHTTPRequest。もしくはHTTP.Push?
var iframe = document.createElement( "iframe" );
iframe.src = <ローカルファイル>;
iframe.onload = function( ) {
//読み込み完了時の動作
}
document.body.appendChild( iframe );
最小構成だとこなかじ。当然のことながら呼び出すコンテンツは同じドメインのものでないと、内部にアクセスした途端にエラーが返ってくる。
んで、XMLHttpRequestではないので色々と制限を受ける。
HTMLを読み込んだ時は、画像やらスクリプトやら諸々全てが完全に読み込まれてから初めてonloadが発生したり、POSTで取得できなかったり。(がんばればできるという話を聞いたが)
textやscriptを読むときは注意が必要。内部でpre要素に入れられつつ、[<>"&]が文字参照に変換されてしまっているので元に戻す必要がある。
var doc = <iframeオブジェクト>.contentWindow.document;
if( doc.doctype == null ) { //nullだとhtmlではない・・・らしい
alert( doc.body.innerHTML
.replace( /^<pre>|<\/pre>$/i, "" )
.replace( /"/g, "\"" )
.replace( /</g, "<" )
.replace( />/g, ">" )
.replace( /&/g, "&" )
);
}
else {
alert( doc.body.innerHTML );
}
外部のコンテンツはとりあえず取得できる。が、したらしたで今度は貧弱なDSの側で色々しなきゃいかん場合もあるので、ある程度はサーバーサイドと相談するのがいいかもしれん。
補足。試しにGoogleのHTMLソースを取得してalertさせたら、画面暗転してから(この時点で既に読み込みは完了してる)ソース表示まで10秒近くかかった。・・・そこまで負荷がかかるのか。(というか描画全般に弱いのかな?)
Info
- 投稿日
- 2006年8月1日
- タグ
- game、javascript、opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1421.html
- ブックマークに追加する
-
- コメント
2006
0801
Tagsgamejavascriptopera