読者です 読者をやめる 読者になる 読者になる

oAutoPagerize ver1.2.3

oAutoPagerize

XREA.COMという記事を見つけ、調べてみたところFlickrのサイト側のJavaScriptの影響を受けて*1いることがわかりました。
ただ、直接的な対応をしなくても、XHTMLかどうかの判定方法を変えることで対応できることがわかったので、その方法で修正しました。
Safari以外には直接影響しませんが、一応アップデート推奨です。
oAutoPagerize - 0xFF

HTMLとNamespace

以下、内部的な話。
ちょっと前に b:id:vantguarde に教えてもらったのですが、HTML5ではhtml要素のデフォルトのNamespaceが http://www.w3.org/1999/xhtml になっているそうです。
その影響か、WebKitでは(つまりSafariGoogle Chromeでは)HTMLなページでも、lookupNamespaceURIするとNamespaceを取得できます。FirefoxOperaは、XHTML(単にXHTMLDTDを宣言しているだけでなく、ContentType: application/xhtml+xml or application/xmlなページ)の場合だけNamespaceを取得します。
これ自体はだからどういうことはないんですが、XPathでNamespaceが必要になるのはxhtml+xmlの場合なので、デフォルトNamespaceのありなしでPrefixのありなしを決めると必要以上にPrefixをつけてしまうみたいです。

というわけで、XHTMLかどうかの判定は、XML(XHTML)とHTMLの判定 - 0xFFのアイディアをベースに、すこし適当に、

var isXHTML = document.documentElement.tagName !== 'HTML';

としました(例によって、nanto_vi先生がこういう書き方をしていたような)。

Chrome2でのXPath

この記事を書いてて気がついたんですが、HTML と XHTML で同じ XPath を使う: Days on the MoonのサンプルがGoogle Chrome 2.0.177.1でエラーになっています。createExpressionがおかしいみたいで、Prefix付きのXPathを渡すとNAMESPACE_ERRになるみたい。これはChromeのバグっぽいかも。

*1:String#replaceがsplit,join方式に上書きされているという残念な実装。GreaseKitがページ側のScriptに影響を受けすぎるという面もありますが…