如何使用jQuery通过用户脚本在plus.google.com上触发此元素的操作?

时间:2011-07-03 18:45:40

标签: jquery userscripts google-plus

我正在大量使用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">▾</span></span>

......这是我正在处理的片段:

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

我可以选择并操纵'More'元素,并here's the bg-color set to yellow使用:

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

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

  1. 尝试使用.click()而不是触发器('click')
  2. 尝试识别在点击时触发的功能,使用Firebug和事件间谍但没有成功
  3. 尝试.mousedown()并触发('mousedown')而不是触发'click'事件
  4. 还有其他想法吗?

1 个答案:

答案 0 :(得分: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);