2011-07-03 27 views
3

我使用的Google+相当繁重,我发现自己经常做的一件事是点击左侧边栏中的“更多”按钮,以访问我隐藏的视野内的圈子。我正在尝试编写一个用户脚本,在页面加载时为我激活“更多”链接。这是高达栏“更多”元素的DOM结构:如何通过使用jQuery的用户脚本在plus.google.com上触发此元素上的操作?

<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'); 

我可以选择和操纵“更多'元素就好了here's the bg-color set to yellow有:

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

...但我仍然无法激活绑定到该元素的功能。事情我已经尝试:

  1. 使用。点击()INSTEAD OF触发器(“点击”)
  2. 试图识别功能上点击触发得到尝试,使用Firebug事件间谍没有成功
  3. 尝试.mousedown()并触发('mousedown')而不是触发'click'事件

任何其他想法?

+1

注意:'$('div.ab-la-A span')。filter('[role =“button”]:contains(“More”)')'can被缩短为'$('div.ab-la-A span [role =“button”]:contains(“More”)') – RoToRa

回答

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); 
+0

是的,你有正确的想法。不得不做一些小的改变(像MouseEvents而不是HTMLEvents)来使它工作,这里是我现在使用的片段:var moreLink = $('div.ab-la-A span')。filter('[role = “按钮”]:含有( “更多”)'); var clickEvent = document.createEvent('MouseEvents'); clickEvent.initEvent('click',true,true); moreLink [0] .dispatchEvent(clickEvent);谢谢。 – vjk2005

+0

很高兴为你效劳。奇怪的是你不得不使用'MouseEvents'而不是'HTMLEvents'。通常Firefox都可以工作。你(还)使用Chrome吗? –

+0

是的,使用Chrome。 – vjk2005

相关问题