Movable Type 3.0DEのバグフィックス
ここで書いている内容はすでにobsoleteです。Movable Type 3.0 Developer Edition日本語版では、すでにここに記載しているほぼすべての問題が解決しています。2004.07.15記。
このエントリでは、Movable Type 3.0の以下のバージョンに関する既知のバグについてまとめています。また、可能な限りその修正方法についても付記するようにしています。
- Movable Type 3.0 Developer Edition(英語版)
- Movable Type 3.0 Developer Edition(日本語版ベータ)
- Movable Type 3.0 Limited Free Version(英語版)
なお、6月8日までこのエントリでバグ修正を行うためのdefault-templates.plを配布しておりましたが、これはMovableType 3.0の配布に含まれる特定のファイルを改変して(つまり派生物を)再配布していると判断されかねません。したがってこの方法での公開は取りやめ、差分パッチパッケージで改めて公開することにしました。パッチパッケージはOgawa::Memoranda: Movable Type 3.0DE修正パッチ(パッケージ配布)から取得できるようになっています。また、このパッチパッケージによって修正されるテンプレートの一覧に関しては、Ogawa::Memoranda: Movable Type 3.0DE修正パッチ(テンプレート一覧)で公開しています。内容が重複してしまいますので、このエントリの修正テンプレート一覧は削除してありますのでご了承ください。
このエントリは、Ogawa::Memoranda: Movable Type 3.0 DE release 個人的修正の内容を皆様のご意見を参考に更新したものです。皆様のご協力に感謝いたします。引き続き、「こんな問題がある」「ここに解決方法が載ってる」などの情報をお持ちでしたら遠慮なくコメント欄にお書き込みください。
2004年6月8日以前にこのエントリからdefault-templates.zipをダウンロードしてくださった皆様、Comment Listing Templateに誤りがありました。Ogawa::Memoranda: Movable Type 3.0DE修正パッチ(テンプレート一覧)を参照して修正していただく必要があります。Comment Listing Templateはコメントポップアップ画面の生成に使われるテンプレートでMT3では通常は使用されません。しかし、Main IndexなどのテンプレートをMT2.Xから引き継いでいてコメントポップアップ機能を使っている場合に使用されます。
以下では、今のところ私が把握してバグとその修正方法について述べます。
TIPS:
このエントリのURLに「#BUGXX」(XXはバグ情報を指す二桁の数字)を付記すると、このエントリ内の特定のバグ情報をポイントできます。
例: http://as-is.net/blog/archives/000871.html#BUG08
lib/MT/L10N/ja.pmのtypo。日本語版ベータでは修正済みです。
tmpl/cms/cfg_prefs.tmplのtypo。312行目あたり。
<p><MT_TRANS phrase="To enable comment registration, enter your TypeKey site token."> <MT_TRANS phrase="To sign up for a TypeKey token, visit the "><a href="http://www.typekey.com/t/typekey/">TypeKey</a> <MT_TRANS phrase="website">.</p>日本語版ベータのTypo。lib/MT/App/Comments.pmの693行目あたり。コメントしようとすると「An error occurred: Global symbol "$cookie" requires explicit package name at lib/MT/App/Comments.pm line 693. Compilation failed in require at mt-comments.cgi line 21.」と怒られるはずです。
if ($cookies && $cookies->{commenter_name} && $cookies->{commenter_name}->value()) {JavaScriptのsetCookieのバグ。Individual Entry Archiveのテンプレートとコメント関係の動的テンプレート(Comment Previewなど)にこのバグが含まれています。
function setCookie (name, value, expires, path, domain, secure) { var curCookie = name + "=" + escape(value) + (expires ? "; expires=" + expires.toGMTString() : "") + (path ? "; path=" + path : "") + (domain ? "; domain=" + domain : "") + (secure ? "secure" : ""); document.cookie = curCookie; }TypeKeyでニックネームに日本語などを使用すると文字化けします。これはクッキーに格納されているニックネームを取り出すのにJavascriptのunescapeメソッドを使用しているためです。一般的に非ASCII文字はUTF-8に変換した後URIエンコーディングした状態でクッキーに格納されることになっています。これを正しくデコードするにはunescapeメソッドの代わりにdecodeURIComponentメソッドを使う必要があります。同様にescapeメソッドの代わりにencodeURIComponentメソッドを使うことを強く薦めます。
コメント関係の動的テンプレートで使われているMTCommentFieldsタグが生成するHTMLは、コメントの中身(本文、Author、Email、URL)を出力してくれません。MTCommentFieldsの仕様が変更される可能性はありますが、このままだとすれば、JavaScriptなどで出力を補ってやる必要があります。
詳しくはOgawa::Memoranda: Movable Type 3.0のMTCommentFields tag参照。
MTCommentFieldsタグが生成するHTMLはAuthor、Email、URLをクッキーに保存・クッキーから削除するために(onclick, onsubmitイベント経由で)rememberMe, forgetMeメソッドを呼び出します。しかし、これらのメソッドが定義本体が存在しないために正常に動作しません。Individual Entry Archiveと同様にメソッドの定義を追加する必要があります。
MTCommentFieldsタグが生成するHTMLコードには誤りがあるような気がします。Individual Entry Archiveでは「Remember me?」ラジオボタンの「Yes」を選択するだけでクッキーに保存されますが、Comment Previewなどでは「Yes」を選択した状態で「Preview」ないし「Post」をクリックすると保存されます。MT 2.Xの時には後者に統一されていたのですが…。
前者の動作に統一するのなら、lib/MT/Template/Context.pmの1126行目と1196行目を以下の通り修正する必要があります。後者に動作を合わせるのならIndividual Entry Archiveのテンプレートを修正することで済みますが、前者の方が好ましい動作ではないかと個人的には考えています。
<input type="radio" id="remember" name="bakecookie" onclick="rememberMe(this.form)" /><label for="bakecookie"><label for="remember"><MT_TRANS phrase="Yes"></label> <input type="radio" id="forget" name="bakecookie" onclick="forgetMe(this.form)" value="Forget Info" style="margin-left: 15px;" /> <label for="forget"><MT_TRANS phrase="No"></label> <br style="clear: both;" /></p>Microsoft Internet Explorerでしばしば観測される「TypeKeyにサインインしてもサインインできない(?)」問題。問題の詳細と私がベータサイトで述べた解決策(案)をtugaaさんがまとめてくださっています。また、「TypeKeyでサインインしたら直前コメントした人の名前が表示された(?)」問題も同じ理由で生じているのではないかと思われます。
簡単に書くと以下のようにIndividual Entry Archiveのテンプレートを書き換える(ちなみに二箇所あります)と期待した動作をします。
<script type="text/javascript" src="<MTCGIPath><MTCommentScript>?__mode=cmtr_name_js"></script><script type="text/javascript"><!-- var commenter_name = getCookie("commenter_name"); //--></script>この修正はテンプレートに対する修正で済みますが、修正方法が場当たり的ですし、本質的にはソースコードの改変によって解決すべき問題ではないかと思います
QuickPostのAllow Comments(コメントを受け入れる)の設定値が読み込まれません。ここは本来checkboxではなくselection listになっているべきです。tmpl/cms/bm_entry.tmplの160行目あたりを以下のように修正することで正常に機能します(HTMLのタグの対応が取れていない点も含めて修正しています)。
<p><TMPL_IF NAME=SHOW_ALLOW_COMMENTS><label><input type="checkbox" name="allow_comments" value="1" /><MT_TRANS phrase="Allow Comments"></label><br /><p> <label for="allow_comments"><MT_TRANS phrase="Allow Comments"></label><br /> <select name="allow_comments" id="allow_comments"> <option value="0"<TMPL_IF NAME=ALLOW_COMMENTS_0> selected</TMPL_IF>><MT_TRANS phrase="None"></option> <option value="1"<TMPL_IF NAME=ALLOW_COMMENTS_1> selected</TMPL_IF>><MT_TRANS phrase="Open"></option> <option value="2"<TMPL_IF NAME=ALLOW_COMMENTS_2> selected</TMPL_IF>><MT_TRANS phrase="Closed"></option> </select> </p> <TMPL_ELSE> <input type="hidden" name="allow_comments" value="0" /> </TMPL_IF> <TMPL_IF NAME=SHOW_ALLOW_PINGS> <p> <label><input type="checkbox" name="allow_pings" value="1" /><MT_TRANS phrase="Allow TrackBack Pings"></label><br /></p> <TMPL_ELSE> <input type="hidden" name="allow_pings" value="0" /> </TMPL_IF></p>Bookmarkletにはそもそも長さ制限があるため、QuickPostが動かない場合があります。lib/MT/App/CMS.pmの380行目近辺の_bm_jsの定義を読むと「scrollbars=yes」が無駄に二回指定されています。これを削るだけで15文字余裕ができる計算になり、すべてのオプションを付けた場合でも「http://.../mt.cgi」が35文字以内であれば動作するようです。
sub _bm_js { my($uri, $show, $height) = @_; qq!javascript:d=document;w=window;t='';if(d.selection){t=d.selection.createRange().text}else%20if(d.getSelection){t=d.getSelection()}else%20if(w.getSelection){t=w.getSelection();}void(w.open('$uri?is_bm=1&bm_show=$show&__mode=view&_type=entry&link_title='+escape(d.title)+'&link_href='+escape(d.location.href)+'&text='+escape(t),'_blank','scrollbars=yes,width=400,height=$height,status=yes,resizable=yes,scrollbars=yes'))!; }さらに細かい話をすれば、Apache httpdサーバを使用している多くの場合、mt.cfgで以下のように設定しておけば「mt.cgi」の「.cgi」は省略できます。つまり、最悪でもCGIPathが33文字以内に収まれば問題ないことになります。現実的にはすべてのオプションを付けることは稀でしょうが、長めのURLにならざるを得ない場合にはご参考になさってください。
AdminScript mt
- Windowsの右クリックメニューにQuickPostを追加しても正しく機能しません。この機能を使うためには、lib/MT/App/CMS.pmの4324行あたりのreg_bm_jsを以下のように変更する必要があります。
sub reg_bm_js { my $app = shift; my $q = $app->{query}; my $js = _bm_js($app->base . $app->uri, scalar $q->param('bm_show'), scalar $q->param('bm_height')); $js =~ s!d=document!d=external.menuArguments.document!; $js =~ s!d\.location\.href!external.menuArguments.location.href!; $js =~ s!^javascript:!!; $js =~ s!\%20! !g; $app->{no_print_body} = 1; $app->send_http_header('text/plain'); $app->print('<script language="javascript">' . $js . '</script>'); 1; } コメンター情報としてURLを入力した場合、MTCommentAuthorLinkは通常そのURLへのリダイレクトページ(http://.../mt-comments.cgi?__mode=red;id=XXX)へのリンクを生成します。ちなみにMTCommentAuthorLinkにno_direct="1"というオプションを付けた場合には直接リンクになるため、以下で述べる問題は生じません。
このリダイレクトページの生成に問題がある場合があります。具体的にはリダイレクトページは以下のようになっています。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head><title>Redirecting...</title> <meta name="robots" content="noindex, nofollow"> <script type="text/javascript"> window.onload = function() { document.location = document.links[0].href; }; </script></head> <body> <p><a href="http://...">Click here</a> if you are not redirected</p> </body> </html>このページは、ページ内に存在する最初のリンクにリダイレクトします。通常は「<a href="http://...">Click here</a>」がその該当リンクとなりますが、一部の広告リンクなどを自動的に挿入するサイトではこのリンクの前に広告リンクが挿入され、リダイレクトはそのページに対して行われることになります。これは期待した動作ではないでしょう。
この問題を解決するには、lib/MT/App/Comments.pmの97行目あたりを以下のように修正する必要があります。また、この修正を行っても広告が挿入されないサイトも通常通り動作します。
window.onload = function() { document.location =document.links[0].href'$uri'; };MySQLを使っている場合に、Draftとして保存したエントリがMonthly Archive Listing(↓)のMTArchiveCountに数え上げられてしまいます。
<ul> <MTArchiveList archive_type="Monthly"> <li><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a> (<$MTArchiveCount$>)</li> </MTArchiveList> </ul>
正確にはDaily、WeeklyなどのすべてのDate-based Archiveに対するMTArchiveCountが誤った値になるという現象が起きます。ちなみにarchive_type="Category"とした場合やMySQLではなく既定のBerkeleyDBを使っている場合には、正しくPublishしたエントリだけが数え上げられます。
関連リンク
このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/141
いつも(勝手に)お世話になっております。
tugaa blogのtugaaでございます。
今回の修正で、ほぼバグがなくなったのでは?と思いました。
また、Comment関連のJavaScriptのコードを
Templateとして分離は便利ですね。
今回の修正を試させていただきます。
本家より修正がすばやいと言うのも、なんとも…。
まぁ、本家は様々な環境下でのテストや、その他問題の発見や
別な問題など色々あると思うので、大変だとは思いますが。
感謝いたします。
英訳した方がいいのかもしれませんね。例えばtugaaさんが指摘されていた問題はMTのSupport Forumでも登場しています。でも誰もちゃんと回答していません。
http://www.movabletype.org/support/index.php?act=ST&f=27&t=41025&s=1a54affa18fe424d4e746b471ca91c91
Support Forumまで見ていませんでしたが、
今見たところ、全く同じ感じですね。
しかもPostされたのが5月17日だし…。
てっきり、アメリカ版はβが取れているので、あまり問題ないのかなって思ってましたが、
Support Forum見る限り、やはり多くの問題や意見が提起されてますね。
参考になりました、ありがとうございます。
しかし、beta siteとかでは問題なくサイン・イン/アウトできるのに、
一部環境下でできないと言うのは、厄介ですね。色んな環境下で動いているだろうし。
今回のVer.UPでTypeKey導入したことは、
良かったのか悪かったのか、まだまだ判断できませんが、
とりあえず、既知のバグ報告や、Bugfixは早めにして欲しいですね(公式に)。
このままだと、ライセンスのこととかなんやかんやで、MT離れが加速してしまうかもしれないと、
ちょっと危惧してます。
早速、default-templates.zipを試させていただきました。
同じサーバで、新規でMT3.0DE-jaを入れてみたところ、
問題なく動き、しかもサインイン・アウトもなぜか問題なくできるようになりました。
変更した点は
1)最初にTypeKey.comにURLを登録したことと、
2)default-templates.zipを利用したと言う点です。
ogawa氏が書かれた、9の手順は実行していません。
1は別に関係ないと思いますので、サインイン・アウトの問題は、
テンプレートに大きく関係しているような気がします。
また、うちの僻地Blogにて書かせていただきます。
本当にありがとうございます。
うまく行ったようでなによりです。また、http://www.tugaa.net/ でまたまたご紹介いただきありがとうございます。
何となくWebサーバの振る舞いが影響している気もするのです。Javascriptの変数を設定するためだけにJavascriptコードを生成するCGIを使うというのは、結構トリッキーな方法ですから本当はやめた方がよいのですが…。「私の投稿が(o)さんのお名前になってしまいました。」みたいなことが起きているところを見ると、ベータサイトも正常に動いているわけではないようです。
Ogawa様、はじめまして。Katsuraと申します。MT3.0b4のバグレポートにBookmarkletの文字数に関するコメントに対してアドバイス頂きありがとうございました。おっしゃるとおり、Scrollbarsは余計なようです。根本的にはサーバのアドレスが長いのが問題(大学の為…)なのですが、フルオプションでクイックポストすることはないため、ご提示頂いた方法で何とかなりそうです。まあIEの仕様にも問題があるとは思うのですが、MT側でFAQ等の整備をすべきかと思っております。
どうもありがとうございました。
どうせQuickPostのオプションなんて8個しかないので、bm_show=trackback,category,...とだらだら書くのは止めてbm_show=11111111(2進表現、79文字節約)とかbm_show=FF(16進表現、85文字節約)とかすればいいのにと思いますね。そうすれば、http://www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com/ でも大丈夫なのに、と。
お世話になっています。
こちらでのバグフィックスを参考に、というより、そのまま使わせて頂いています。
が、挙動不審なんです。
http://www.shagaa.no-ip.com/mt/memo
なんですけど、
コメントがうまくいかないんです。
サインインしないで、普通にコメントする場合、
名前とmailアドレスを記入して、コメントを記入、確認ボタンを押すと再び空のフォームが出てきて、その上にはさきほど書いた内容がそのまま表示されます。
ここで、何も書かずにそのまま投稿ボタンを押すと、
Name and email address are required.
と出てきます。
ではと、フォームにふたたび書き込んで、投稿ボタンを押すのですが、コメントは反映されていません。。。
それではと、こんどは、コメントを記入して確認ボタンを押さずに、投稿ボタンを押します。
さきと同様に反映されません。
サインインしたあとにも同じです。
どうなっているのでしょう???
なけます。。。
たぶんcomments.jsが作られていないのではないでしょうか。
MovableTypeのテンプレート一覧画面で、「インデックス・テンプレート」の「新しいインデックス・テンプレートを作る」をクリックします。
「テンプレートの名前」は任意の名前、「出力ファイル名」は「comments.js」、「インデックス・テンプレートを再構築するときにこのテンプレートを自動的に再構築する」にチェック、「このテンプレートにリンクするファイル」は何も指定しない状態にしてください。
次に「テンプレートの中身」にこのエントリのcomments.jsをコピペして保存してください。
最後に「サイトの再構築」を行えば、comments.jsが作られるはずです。
いつも(勝手に)お世話になっております。
tugaa blogのtugaaでございます。
実は、昨日普段使わない(レジストリいじるから)QuickPost
を試してみたら、エラーがでて、以前指摘されていた、
lib/MT/App/CMS.pmの4331行目あたりのsub reg_bm_js関数に
$js =~ s!%20! !g;を追加しておかないといけないことに気付きました。
で、その辺とまとめて、ogawa氏が指摘されていたTypo等を修正したファイルを
zipファイルにしてtugaa blogにおいておきました、良かったら使ってやってください。
とりあえず自分で使う分には不自由なく使える程度にはなりましたが、まだまだ完璧には程遠いなあと思っています。例えば、QuickPostでescapeメソッドを使っているけど、これはencodeURIComponentにしなくていいのかなあ、とか。UTF-8の取り扱い方とか。思えば、MT2.Xもバグが枯れるのに随分時間がかかりました。
reg_bm_jsに関しては「自分では動作を確認」していないのでこのエントリには載せておりません。確認でき次第載せる予定でいます。
こんにちは、お世話になっています。
すみません、一週間近くダウンしたままでした。
やっと日曜日になって、一部ですがサーバ復活までこぎつけました。
今はMTまで手がまわらない状態なのですが、落ち着きましたらOgawaさんのスクリプトを利用させていただきいと思います:-)。
こんばんは、tugaa blogのtugaaでございます。
Typoの指摘ありがとうございました。
Typoを修正し、bm_entry.tmplを昨日変更された、
ものに差し替えました(Typo修正の意味はなくなってますが)。
本当にいつもお世話になりっぱなしで申し訳ありません。
修正したzipファイル(corrected_files.zip)を、
tugaa blogに設置いたしました。
よろしければ、是非ご利用ください。
Ogawa::Memoranda様に設置していただいても、私としては、
かまいませんので、よろしくお願いいたします。
あわわ、書き終えてみて自分のコメンと見たら、偉そうな書き方に…。
> Ogawa::Memoranda様に設置していただいても、私としては、
> かまいませんので、よろしくお願いいたします。
「かまいませんので」はなく、「光栄です」ということを
書きたかったんです…。生意気な書き方でスイマセン。
あと、非常に勝手なお願いだと思いますが、うちの僻地Blogに
default-templates.zipをUPしてよろしいでしょうか?
一度、MT3.0DE-jaβのバグ修正して、設置する流れなどを、
纏めてみたいと思っております。
御検討いただければ幸いです。
私としては、milanoさんが日本語化パッチを「差分」で提供していたのと同様、差分で提供したいと考えていて、そのための方法を模索しています。Wdiffというツールもあるにはあるのですがイマイチかな、と。
「コメント・リストのテンプレート」も悩みの種です。これはMT2.Xのコメントポップアップで表示されるテンプレートで、MT3では使われていません。
で、実は、
http://hassaku.main.jp/mt/mt-comments.cgi?entry_id=871
をクリックすると分かるように実はこのエントリで掲載している「コメント・リストのテンプレート」には誤りがあります。近々直すつもりですが、「MT3で使わないんだったら直す必要もない」ので…。
あわわわ、カブってしまいました。
繰り返しになりますが、私は本来ライセンス条項に抵触しないように(しにくいように?)差分で提供したいと考えており、default-templates.zipのような丸ごとファイルを含むような配布は避けたいと思っています。
したがってtugaaさんには大変申し訳ないのですが、私の作った(らしい)ファイルが私の管理範囲を越えて流出することも現状避けたいと思います。
もちろん、「差分」を配布できるようなパッケージングができれば、私のところとtugaaさんのところで相互にアップデートパッケージを公開し合うということが「健全に」行えます。↑の私のコメントはそういう認識で書いたものです。
勝手なお願いをした上、丁寧な御返答ありがとうございます。
ライセンス条項に抵触する可能性があることを考えていませんでした。
自分勝手なお願いをして、申し訳ありませんでした。
Movable Type ベータ・ソフトウェア利用許諾契約書に
> 本ベータ・ソフトウェアの改造、翻訳、逆コンパイル
> 又は逆解析(リバース・エンジニアリング)を、
> 法律上認めている範囲を超えて行うこと及びそれを試みること
と第2条【禁止事項】に、確かに書かれています。
ogawa氏の仰るとおり、どこまでが規約の範囲内か、
正式版がいつ出るか、βのVer.UPがあるのか現在分からないので、当然ですね。
ただ、新規にMTを始めようとしてる人には厳しいと思いますので、
早く正式版が出てほしいと思ったりしています。
これからも、よろしくお願いいたします。
そういうわけでテンプレートとソースへの変更を含んだパッチパッケージを作っています。WindowsならMTのアーカイブを展開したフォルダにパッチ実行ファイルを置いてダブルクリックするだけで更新できるようになります(MT2.Xの日本語化パッチと同じですね)。
Wdiffがイマイチと書きましたが、例えばWinPatchがディレクトリごと指定できるのに比べて、ファイルを一個ずつ指定するのが面倒だというだけです。まあ日本語版・英語版合わせて12個のファイルしか変更しませんから手間はそれほどでもありません。
だいたいできたのですが、blogへの反映は帰国後の週末になるかもしれません。ネットワーク環境が安定しないのです。
また新しいバグを見つけてしまった。日本語のベータサイトでは埒があかないので本家のSupport ForumのBug Reportに投げてみた。
http://www.movabletype.org/support/index.php?act=ST&f=8&t=42375
とても詳しい修正情報がたくさんあって便利でした。
私のつかってるMT3.0もコメントの問題があるのですが
やはりリンク先がおかしくてアーカイブになっています。
コメントだけでなくトラックバックも同様です。
どの対策を試しても全く解決できませんでした。
リンクしているURL
コメント:/archives/2004/06/index.html#000003#comments
トラックバック:http://www.silfon.net/MT/archives/2004/06/index.html#000003#trackbacks
どちらも表示するページは一緒なのですがこれはどんなものでうしょう・・・
コメントcgiにアクセスするとちゃんとコメントできますが
リンクがされてないのでは意味がないですよね。
Utaさんは意図してIndividual Entry Archive(個別のアーカイブ)を生成しないようにしてらっしゃいますか?
MT3では、標準的には、Individual Entry Archiveにコメント欄やトラックバックリストが生成されるようになっています。
Individual Entry Archiveを生成したくない場合には、MT2.Xと同様にmt-comments.cgiやmt-tb.cgiでポップアップするようにTemplateを修正してやる必要があります。
すばやいお返事ありがとうございます。
個別のアーカイブですが、設定では利用可能となっております。
セットアップの説明などをみてもアーカイブ・ファイルの
テンプレート部分はみな空欄ですし、
どのサイトのアーカイブ設定と比べても違う部分はありませんでした。
おっかしいですね~。念のため、以下の2点を確認された方がよいと思いますよ。
(1)「ウェブログの設定」の「アーカイブの設定」で「優先するアーカイブのタイプ」が「個別」となっていること。
(2)「アーカイブの設定」の「アーカイブ」で「個別」にチェックが入っていること。
すみませんでした、解決しました。
(1)のヒントで解決できました。
アーカイブの設定ばかりいじっていてウェブログの設定にも
アーカイブ設定があるのを見落としていたようです。
個別を優先しなければコメント欄が現れないという事は
全く解らなかったので、非常に助かりました。
ご親切に、すばやく丁寧なアドバイスありがとうございました。
なんか、今更って言われそうですが、半兵衛さんに
教えていただいた13番目の修正箇所のTypoを記入しておきます。
誤)window.onload = function() { document.location = '$uri'$; };
正)window.onload = function() { document.location = document.links[0].href'$uri'; };
と、uriの後ろの$が一つだけ、余計に入っていました。
消去線の中は、省いています。一応、ご報告までに。
(半兵衛さん、スイマセン&ありがとうございます)。
すいません、上の
正)window.onload = function() { document.location = '$uri'; };
です。消去線の中まで書いてしまいました。
本当にスイマセン。
ホントだ、直しておきます。