練炭ブログ

萌え壁紙、Irvine、DMonkey、Proxomitron などの情報を扱ってます。

Irvine: 右クリックメニューの「Irvineへ登録」で相対リンクが無視される件

コメントなし»

Irvine のオプション設定 → IEメニューにある「Irvineへ登録」(iemenu11.htm)を使うと、
ウェブページ上で選択した部分に含まれるリンクを Irvine に送ってダウンロードすることが出来るのですが、いつのころからか(もしかしたら「Irvineへ登録」を使いはじめた時から)相対リンクが無視されるという問題がありました。

他でこの症状の話を聞いたことがないので、インターネットオプションのセキュリティの設定など環境依存なのかも知れません。

なぜ無視されるのか調べてみたところ、.href で参照した値の先頭に about: がついおり、もともと http://、https://、ftp:// 以外は Irvine へ送らない動作なので無視されているという状況でした。

ただ、なぜ .href の値が相対リンクのままでも正しい絶対リンクでもなく、about: が付いているかがずっと謎でしたが、関係あるっぽい情報を発見しました。

Karma's Nucleus DevBlog » Javascript: createElement, innerHTML and IE security zones

iemenu11.htm も createElement() した div 要素を DOM ツリーに繋げないまま innerHTML を書き換えているので、about:blank を基準に相対リンクの絶対リンク化されているのではないか、と考えられます。

試しに div を document.body に appendChild() してから innerHTML を書き換えると、正しい絶対リンクが得られ Irvine へ送ることが出来るようになりました。

ただしこの場合ページの DOM ツリーを改変してしまう、という問題があります。style.display='none' → appendChild() → innerHTML 書き換え → リンク抽出 → removeChild () で一応見た目は変わらずに処理は出来るようです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です