ページ内でスクリプトが動作するかどうかチェック

Webサイトの中には悪意を持ったスクリプトが埋め込まれている場合もあります。他にも悪意はなくても動作がおかしいものなどもあります。Lunascapeに限らず、すべてのブラウザでは安全のためJavaScriptが動作しないようにすることができます。

アクセスしているページ内にスクリプトが埋め込まれているかどうか手軽にチェックすることができれば便利です。そこで、ページ内容にアクセスしてscriptタグがあるかどうかをチェックするスクリプトを作成します。このスクリプトはLunascapeでJavaScriptを無効にしていても動作します。これにより、JavaScriptを動作させないまま手軽で安全にチェックを行うことができます。

Lunascapeの拡張スクリプトでは表示しているタブウィンドウ内のドキュメント内に対してアクセスすることが可能です。そこで、ページ内のscriptタグの数を調べてスクリプトが使われているかどうかをダイアログに表示します。

まず、ページ内のドキュメントにアクセスするためにはドキュメントIDを取得する必要があります。これはGetDocumentID()メソッドを使います。パラメータには取得したいタブウィンドウのインデックス番号を指定します。アクティブになっているウィンドウを対象にするのであればLunascape.ActiveIndexをパラメータに指定します。

Lunascapeではタブウィンドウ内のデータに関してはDOM (Document Object Model:ドキュメントオブジェクトモデル) としてアクセスすることができます。このドキュメント情報を取得するにはGetDocumentObject()メソッドを使い、パラメータにはGetDocumentID()で取得したドキュメントのIDを指定します。

これで、表示されている内容に対してDOM関連の命令を使ってアクセスすることができるようになります。今回はscriptタグの数を調べればよいのでgetElementsByTagName("script")としてscriptタグのタグ情報を取得します。あとはlengthプロパティでscriptタグの個数を調べることができるので1以上の場合とそうでない場合、それぞれダイアログを表示させればできあがりです。

実際のスクリプトは以下のようになります。調べたいページをアクティブにしてから実行するとダイアログが表示されます。

図6 チェックしたいタブウィンドウをアクティブにする

図7 scriptタグが含まれている場合

図8 scriptタグが含まれていない場合

スクリプト002

function OnClick(){
    // スクリプトが使われているか調べる
    var idDocument = Lunascape.GetDocumentID(Lunascape.ActiveIndex);
    var doc = Lunascape.GetDocumentObject(idDocument);
    var scriptTag = doc.getElementsByTagName("script");
    if (scriptTag.length > 0){
        Lunascape.MessageBox("このページではスクリプトが使われています");
    }else{
        Lunascape.MessageBox("スクリプトは使われていません");
    }
}