Как мне запустить действие над этим элементом на plus.google.com через скрипт пользователя с помощью jQuery? - PullRequest
3 голосов
/ 03 июля 2011

Я использую 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', и вот bg-color, установленный на желтый с помощью:

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

... но я все еще не могу активировать функцию, связанную с элементом,Вещи, которые я пробовал:

  1. пытался использовать .click () вместо триггера ('click')
  2. пытался определить функцию, вызываемую при нажатии, используя Firebug и Event Spyбезуспешно
  3. пробовал .mousedown () и триггер ('mousedown') вместо того, чтобы вызывать событие "щелчка"

Есть другие идеи?

1 Ответ

1 голос
/ 04 июля 2011

Используйте низкоуровневый код для запуска ссылки 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);
...