oAutoPagerize ver1.2.3
XREA.COMという記事を見つけ、調べてみたところFlickrのサイト側のJavaScriptの影響を受けて*1いることがわかりました。
ただ、直接的な対応をしなくても、XHTMLかどうかの判定方法を変えることで対応できることがわかったので、その方法で修正しました。
Safari以外には直接影響しませんが、一応アップデート推奨です。
oAutoPagerize - 0xFF
HTMLとNamespace
以下、内部的な話。
ちょっと前に b:id:vantguarde に教えてもらったのですが、HTML5ではhtml要素のデフォルトのNamespaceが http://www.w3.org/1999/xhtml になっているそうです。
その影響か、WebKitでは(つまりSafariとGoogle Chromeでは)HTMLなページでも、lookupNamespaceURIするとNamespaceを取得できます。FirefoxとOperaは、XHTML(単にXHTMLのDTDを宣言しているだけでなく、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に影響を受けすぎるという面もありますが…