2011-07-03 26 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

相關問題