スキップしてメイン コンテンツに移動

【Opera Extension】開発者モードでhttpsのサイトからgetFocusedで情報が取得 できなかったメモ

大した内容ではないけど、大ハマりしたのでメモしておきます。

Opera Extensionを作成しようと思い、

・Opera: Opera Extensions API guides
http://www.opera.com/docs/apis/extensions/


を参考にしながら、あーでもないこーでもないと、とりあえず、Extension側から開いているサイトのタイトルとURLでも取得しようと、試行錯誤していました。ドキュメントや公式で公開されているサンプルでは、イマイチわからなかったので、Operaインストールしたら入れておいた方が良いと拡張機能ランキングサイトとかで紹介されていた、To-Read sitesの

・To-Read sites - Opera extensions
https://addons.opera.com/addons/extensions/details/to-read-sites/2.2/

screen2


制作者さんのブログで、

・Opera Extensions – moje pierwsze rozszerzenie « Michał Borek – tech blog
http://www.greenpath.pl/2010/10/opera-extensions-moje-pierwsze-rozszerzenie/


過去の1.0バージョンのソースが公開されているので、参考にさせていただきました。index.html popup.html background.js等の流れをつかむのに、とても参考になりました。
※oexファイルをダウンロードして、zipファイルとして解凍

で、開いているサイト(タブ)の情報を取得するには、ドキュメントにあるように、getFocusedメソッドを使います。

・Opera: Opera Extensions API: Windows and Tabs guide
http://www.opera.com/docs/apis/extensions/windowsandtabsguide/


上記のTo-Read sitesのbackground.jsを見やすく(動く感じに?)書き換えると、こんな感じでしょうか。

var currentTab = null;

opera.extension.addEventListener("connect", function(){

var tab = opera.extension.tabs.getFocused();

if (tab) {
currentTab = tab;
opera.postError("tab exist - Opera info");
opera.postError("background title:" + currentTab.title);

}
else {
opera.postError("tab is null - Opera Error");
currentTab = null;
}

}, false);




Screenshot_1どこかのサイトへアクセスするとイベントが発生し、このプログラムが処理されます。フォーカスの当たってるタブ情報が取得され、タブのタイトルをOperaのエラーコンソールへ出力します。で、このサンプルを試すために、config.xmlファイルをOperaにドラッグ&ドロップして、開発者モードで動かしました。




で、前置き長くなりましたが、大ハマりしたポイントです。


※細かい実装の部分は、割愛します


 
Google検索やYahoo!トップにアクセスした時は、getFocusedメソッドでサイトのタイトルやURLを取得できるのですが、Googleカレンダーへアクセスした時は、取得できませんでした。何が違うのか、他のサイトもいろいろアクセスしてみましたが、何となく、




HTTPアクセス : OK
HTTPSアクセス : NG



の違いだと気付きました。ここからが、調べども調べども原因がわからず………



元々Operaがそういう仕様なのか?と思いきや、先ほど紹介したTo-Read sitesやTab counterはHTTPSアクセスでもお構いなしに、情報を取得しているように見えます。





・Tab counter - Opera extensions

https://addons.opera.com/addons/extensions/details/tab-counter/1.0/?display=en




tab-count-screenshot






Extensionのドキュメントを見たり、英語あんまり読めないけどOperaのForumを見たり、Googleで海外のサイトを検索するなどしても、なかなか解決策が見つかりませんでした。しかし、ちょっとずつヒントを得ながら・・・


拡張機能の管理画面から、設定のプライバシー




privacy




保護されたページで有効にするチェックボックスにチェックを入れることで、Googleカレンダー等のHTTPSアクセスでも、タブ情報を取得することがでいました。




WS000176



次に、拡張機能を作るにあたり、この設定をどうやってデフォルトにしておくか・・・という問題にぶち当たりました。絶対、config.xmlあたりにデフォルトになるよう記述するんだ!と思っていたのですが・・・・




これは、開発者モードで、デフォルトチェックが外れており、ファイルを圧縮してoexファイルでOperaへドラック&ドロップすれば、勝手にチェックが付いているという仕様のオチでした・・・(´ヘ`;)




開発者モードでやってるが故のトラブル・・・




まあ、なかなか読めない英語を読もうとした事は、収穫があったことにしておきたいです。

コメント

  1. Very nice, i suggest webmaster can set up a forum, so that we can talk and communicate.

    返信削除

コメントを投稿

このブログの人気の投稿

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseの高速化メモ

Eclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。