3

我非常频繁地使用 Google+,我发现自己非常频繁地做的一件事是点击左侧边栏中的“更多”按钮来访问我隐藏在视图之外的圈子。我正在尝试编写一个用户脚本,它将在页面加载时为我激活“更多”链接。这是边栏直到“更多”元素的 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');

我可以很好地选择和操作“更多”元素,这里的 bg-color 设置为黄色

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

...但我仍然无法激活与元素相关的功能。我尝试过的事情:

  1. 尝试使用 .click() 而不是 trigger('click')
  2. 尝试使用 Firebug 和 Event Spy 识别点击时触发的功能,但没有成功
  3. 尝试了 .mousedown() 和 trigger('mousedown') 而不是触发 'click' 事件

还有其他想法吗?

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 回答