Hatena::Groupjavascript

JavaScriptで遊ぶよ

 | 

2009-11-27

href は OK だけど getAttribute('href') だと NG?

08:10

AutoPagerize の SITEINFO を書いてて偶然見つけた。

この URL の先のページで、"Next" と書かれたリンクがあるのだけど、HTML だとこんな感じ。

<td class="next"><a href="/i.html?LH_Price=..115%40c&amp;_trkparms=65%253A12%257C66%253A2%257C39%253A1%257C72%253A2464&amp;_nkw=gillette+mach+3&amp;_trksid=p3286.c0.m14?_pgn=2" class="enabled">Next</a><a href="/i.html?LH_Price=..115%40c&amp;_trkparms=65%253A12%257C66%253A2%257C39%253A1%257C72%253A2464&amp;_nkw=gillette+mach+3&amp;_trksid=p3286.c0.m14?_pgn=2" class="enabled"><img src="http://pics.ebaystatic.com/aw/pics/buttons/btnsquarertArrow.gif" alt="Next" id="q_8" class="pic"></a></td>

で、

javascript:alert(document.querySelector('td.next a').href)

とか

javascript:alert(document.querySelector('td.next a'))

ってやると

http://shop.ebay.com/i.html?_nkw=gillette+mach+3&_sacat=0&_trksid=p3286.m270.l1311&LH_Price=..115%40c&_odkw=DNS-321&_osacat=0

と表示される (ソース中の URL と違う?) のに、

javascript:alert(document.querySelector('td.next a').getAttribute('href'))

とやるとただの空文字。

javascript:alert(document.querySelector('td.next').innerHTML)

だと

<a href="" class="enabled">Next</a><a href="/i.html?LH_Price=..115%40c&amp;_trkparms=65%253A12%257C66%253A2%257C39%253A1%257C72%253A2464&amp;_nkw=gillette+mach+3&amp;_trksid=p3286.c0.m14?_pgn=2" class="enabled"><img style="cursor: pointer;" src="http://pics.ebaystatic.com/aw/pics/buttons/btnsquarertArrow.gif" alt="Next" id="q_8" class="pic"></a>

ってなる。<a href="" class="enabled">Next</a> ← href が空。

どうなってんの??

wowowowo2009/11/28 08:57JavaScript無効にしてリロードしてからJS有効にしてブックマークレット実行したら出ましたよ。スクリプトでhref消してイベント拾ってるのでは。

wowowowo2009/11/28 09:25論点そこじゃなかったですね済みません。a.hrefが絶対パスを返す仕様のせいですかね。javascript:(function(){var a=document.createElement('a');a.setAttribute('href','');alert(a.href);})()こんな感じ?

os0xos0x2009/11/28 10:30(今見た限りでは)
http://include.ebaystatic.com/v4js/en_US/e643/Finding_Common_e64310279810_6b_en_US.js
の中のbuildPagerってメソッドの中で、
this.nextAnchors[0].href="";this.AjaxUtils.addEventHandler(this,this.nextAnchors[0],"click",this.onNextAnchor);
ってしてますね…。トラッキングのつもりで、画像リンクのほうは単に漏れてるのでしょうか…。

edvakfedvakf2009/11/29 03:54あーそっか、.href のときは単にその URL を返してただけでした。何を馬鹿なこと思ってたんだろう。

Next のリンクは、1ページ目も2ページ目も以降も全部 HTML の中では ?_pgn=2 となっていました。それでその ?_pgn=2 のページを開いても、1ページ目と同じ情報が出ています。

とりあえずこんなふうに SITEINFO 書いてみましたが、結局同じ情報がくり返すだけなので、このページでは役立たずでした。

{
"url": '^http:\/\/shop\.ebay\.com\/',
"nextLink": '//td[@class="next"]/a[local-name(./descendant::*[1])="img"]',
"pageElement": '//div[@id="ResultSet" and @class="rs_box"]',
},

ebay に関しては深入りするのはやめておこうと思います。

トラックバック - http://javascript.g.hatena.ne.jp/edvakf/20091127
 |