3

私はGoogle+を非常に頻繁に使用していますが、非常に頻繁に行っていることの1つは、左側のサイドバーにある[その他]ボタンをクリックして、非表示になっているサークルにアクセスすることです。ページの読み込み時に[その他]リンクをアクティブにするユーザースクリプトを作成しようとしています。これは、「More」要素までのサイドバーのDOM構造です。

<div class="a-b-la-A">
<h2 class="a-za">Navigation</h2>
<a href="/welcome" target="_top" class="d-h a-b-h-Jb a-la-h a-la-aH ">Welcome</a>
<div class="a-la-Dd"></div>
<a href="/stream" target="_top" class="d-h a-b-h-Jb a-la-h a-la-aH  a-la-h-Pa">Stream</a>       
<div class="a-la-h-ga"><a href="/stream/circles/p5653c3hhy60aadf997" target="_top" class="d-h a-b-h-Jb a-la-h a-la-Rb-h a-b-la-Rb-h">Friends</a></div>
<span role="button" class="d-h a-b-la-gc-h a-la-h a-la-hA" tabindex="0">More<span class="a-b-la-bw a-la-tb-q">▾&lt;/span></span>

...そしてこれが私が取り組んでいるスニペットです:

$('div.a-b-la-A span').filter('[role="button"]:contains("More")').trigger('click');

'More'要素を適切に選択して操作できます。これが、黄色に設定されたbg-colorです。

$('div.a-b-la-A span').filter('[role="button"]:contains("More")').css({'background-color': 'yellow'});

...しかし、要素に関連付けられた機能をアクティブ化することはできません。私が試したこと:

  1. trigger('click')の代わりに.click()を使用してみました
  2. FirebugとEventSpyを使用して、クリック時にトリガーされる関数を特定しようとしましたが、成功しませんでした
  3. 'click'イベントをトリガーする代わりに、.mousedown()とtrigger('mousedown')を試しました

他のアイデアはありますか?

4

1 に答える 1

1

低レベルのコードを使用してJSリンクを起動します。このようなものが機能するはずです:

var clickEvent  = document.createEvent ("HTMLEvents");
clickEvent.initEvent ("click", true, true);

var jNode       = $('div.a-b-la-A span').filter('[role="button"]:contains("More")');
if (jNode.length != 1)
    alert ('Oops! Found too many (or no) "More" links');

jNode[0].dispatchEvent (clickEvent);
于 2011-07-03T22:43:22.597 に答える