Luna Labs
Luna Labs
Lunascape6 Betaで拡張されたLunascape API

先日リリースされたLunascape6 Betaでは、5種類の新APIがLunascape APIに追加されました。中にはLuna Labsのフォーラムで要望のあったものも含まれています。内訳としては、

  1. CaptureWebPage
    - Webページのスクリーンショットをキャプチャ
  2. ExecuteJavaScript
    - JavaScriptを実行
  3. GetDOMElementAttribute
    - DOM要素の属性を取得
  4. GetEngineUserAgent
    - 特定エンジンのユーザーエージェントを取得
  5. SetEngineUserAgent
    - 特定エンジンのユーザーエージェントを設定

となります。

CaptureWebPageは、3種のエンジンでそれぞれ同様に機能するように実装されているため、Tridentタブ、Geckoタブ、WebKitタブのそれぞれでスクリーンショットをキャプチャし、レンダリング結果を比較するのに重宝するでしょう。

ExecuteJavaScriptは、ブックマークレット同様に、与えたJavaScriptの文字列を、指定したドキュメント上で評価・実行するというAPIです。用途としては、Webページ(またはオンザフライで生成したドキュメント)を表示しているタブの内容をスクリプトサイドバーから操作することを想定しています。従来は、TridentタブからしかDOMオブジェクトを取得できず、その他のエンジンではタブの内容を操作する手段が提供されていなかったため、このAPIによってスクリプトサイドバープラグインのトリプルエンジン対応が可能になったといえます。

GetDOMElementAttributeは、Trident以外のエンジンでDOMオブジェクトを取得できないという問題ならびに、ExecuteJavaScriptに返り値が存在していないためにスクリプトサイドバー側で実行結果を取得できないという問題に対処するために存在しています。GeckoやWebKitのタブ内に存在しているDOMオブジェクトへの直接アクセスはできないにしても、ExecuteJavaScriptでDOM操作を加え、実行結果の値をどこかのDOM要素の属性にセットしてからGetDOMElementAttributeで実行結果を取得するという方法で、間接的なDOM操作が可能になります。

GetEngineUserAgent/SetEngineUserAgentは、従来のユーザーエージェント取得・設定APIであるUserAgentを補完するAPIです。UserAgentが全てのエンジンに影響するのに対し、これらを用いると特定のエンジンを対象にしてユーザーエージェントの取得・設定を行うことができます。

アドオン作者の観点からみると、ExecuteJavaScript/GetDOMElementAttributeは比較的大きな意味を持つかもしれません。2ch Plugin for Lunascape実装時にはこれらのAPIが無かったため、スクリプト実行/DOM操作の遅いTridentタブを専用に利用する必要がありましたが、これでようやく高速なGeckoやWebKitのタブをスクリプトサイドバープラグインから利用できる素地が整ったことになります。工夫次第では、LunascapeアドオンとGeckoアドオンとの通信・連携も実現できるでしょう。


Posted 2009/11/13 19:01 by RyuK
Copyright Lunascape Co., Ltd. All rights reserved.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems