最終更新:
kitamomonga 2010年08月24日(火) 13:04:23履歴
「refresh する meta タグ」を保存しているクラスです。次のようなものです。
<meta http-equiv="refresh" content="5; url=hoge.htm">
このタイプ以外の meta は Meta クラスでは無視され、Mechanize が特別に解釈することもありません。
Mechanize#follow_meta_refresh がユーザーによって true に設定されていたときに、ページ取得直後に #uri へ自動的に移動するためのデータクラスとしてのみ使用されます。ページの Meta オブジェクトを変更しても移動は行われません。
Mechanize::Page::Link を継承しているので、Mechanize#follow_meta_refresh= で設定を変更しなくても Mechanize#get に渡すなどして「手動リフレッシュ」させ、URL 先の Page オブジェクトを取得することはできます。
- parse - meta の content 属性から秒数と URL をパースして返す
- new - Mechanize::Page::Meta オブジェクトを生成する
- node - この meta を表す HTML ノードを返す
- href - リフレッシュ先の絶対 URL を文字列で返す
- attributes - alias #node
- page - この meta を含むページオブジェクトを返す
- referer - alias #page
- uri - リフレッシュ先の絶対 URL を URI オブジェクトで返す
- click - リフレッシュ先の URL にアクセスし結果を履歴に登録して返す
meta の「リフレッシュタグ」をパースし、秒数とリフレッシュ先の絶対 URL を配列にして返します。ユーザーが使用することはありません。
引数 content で渡された
<meta http-equiv="refresh" content="5; url=hoge.htm">という HTML の content 属性値 "5; url=hoge.htm" を "5" と "hoge.htm" に分解し、hoge.htm 部分は引数 uri を利用して絶対 URL に変換します。
分解できなかった場合は [nil, uri.to_s] を返します。
Mechanize::Page#meta 内で Meta オブジェクトを作成する際に使用されます。
この Meta オブジェクトを作成したときに使用した HTML ノードを Nokogiri::HTML::Element? 等で返します。
ただし、Mechanize::Page#meta で返る Meta オブジェクトは Mechanize::Page::Meta.parse の結果で拡張されており、待機秒数が文字列で node['delay'] に、リフレッシュ先の絶対 URL 文字列が node['href'] にそれぞれ格納されています。
リフレッシュ先の絶対 URL を文字列で返します。
Mechanize::Page#meta で返る Meta オブジェクトは URL が絶対 URL になっています。meta に相対 URL で記述されていた場合は、meta が所属する #page の URL が基本になって変換されています。
URI オブジェクトで欲しい場合は #uri メソッドを使用します。
#href の返す URL にアクセスし、サーバからの結果を履歴に登録して返します。
内部的には Mechanize::Page#click なので、リファラとして #page の URL が必ず送られます(通常の Web ブラウザの挙動とは違います)。meta refresh はリファラが一切送られないことを前提に設置されていることが多いので注意が必要です。リファラを送りたくない場合はこのオブジェクト自体か #href の返り値などを Mechanize#get してください。
