2008-08-02

Aptana Jaxer で foo.html? といった ? で終わる ページは callback に失敗する

Aptana Jaxer で http://127.0.0.1:8081/foo.html? といった ? で終わる URL でページを表示し、JavaScript から Jaxer にコールバックしようとすると、次のような例外が発生します。



http://127.0.0.1:8081/foo.html のように ? がないときや http://127.0.0.1:8081/foo.html?bar のように ? 以降があるときは、このエラーは発生せず、期待どおり動作します。

注意さえすれば実用上は不都合ないと思いますが、気になったので原因を調べてみたところ、Jaxer が HTML ページをレンダリングするとき、自動的に追加する JavaScript コードに誤りがありました。

本来なら Jaxer.Callback.pageName の値には、このページの識別子が指定されるはずなのですが、? で終わるときのみ空欄になってしまいます。これはバグですね。

Jaxer.Callback.pageSignature = 610035010;
Jaxer.Callback.pageName = '';
Jaxer.CALLBACK_URI = '/jaxer-server/callback';
Jaxer.ALERT_CALLBACK_ERRORS = true;

具体的な事象が分かったので、Aptana に報告せねばと調べたところ、URL with question mark at the end fails Jaxer という Issue があり、解決済みとなっていました。貢献できると思ったのにちょっと残念。

ここで扱った Aptana Jaxer のバージョンは 0.9.7.2472 です。ですので、先日公開された 1.0.0 RC B では改善されているということですね(未確認です)。

1 件のコメント:

aquilegia さんのコメント...

やはりバグでしたか・・・。私もローカルで確認してまして末尾を?マークにするとJaxer.application.keyとJaxer.page.keyの値も期待した値になりません。

■期待
Jaxer.application.key : 127.0.0.1:8000
Jaxer.page.key : 127.0.0.1:8000

■結果
Jaxer.application.key : (空)
Jaxer.page.key : (空)