JScript делает мою голову в большинстве дней, но плохо разработанные сайты делают это еще больше. Foursquare является одним из таких примеров в отношении своих суперпользователей.
Желаемый результат
Сценарий greasemonkey, который просматривает каждое вхождение класса DIV searchResult , а после класса DIV name добавляет два новых элемента A HREF, подобных этим:
<a href="/venue/venueid/edit">Manage venue</a> <a href="/edit_venue?vid=venueid">Edit venue</a>
Scenairo
Я бы хотел немного облегчить жизнь их суперпользователям с помощью Greasemonkey. Намерение состоит в том, чтобы изменить определенную страницу на сайте (https://foursquare.com/search), и добавить ряд дополнительных ссылок, чтобы перейти непосредственно на определенные страницы для места, которое могло бы ускорить рабочий процесс.
Я искал примеры того, как это сделать (учиться через реверс-инжиниринг), но я застрял, если мне следует использовать RegEx или что-то еще.
Пример * +1026 *
На странице результатов поиска (https://foursquare.com/search?q=dump&near=Perth%2C+Australia), есть список возвращаемых мест. Код для каждого места, возвращенного в результатах поиска, выглядит примерно так:
<div class="searchResult">
<div class="icon"><img src="https://4sqstatic.s3.amazonaws.com/img/categories/parks_outdoors/default-29db364ef4ee480073b12481a294b128.png" class="thumb" /></div>
<div class="info">
<div class="name"><a href="/venue/4884313">Staff Smoking Spot / Dumpster Dock</a></div>
<div class="address"><span class="adr"></span></div>
<div class="specialoffer"></div>
</div>
<div class="extra">
<div class="extra-tip"><div><a href="/venue/4884313">0 tips</a></div></div>
<div class="extra-checkins"><div>10 check-ins</div></div>
</div>
</div>
Работа пока
Оглядываясь на ответы, вот что я придумал (ниже). Излишне говорить, что он не определяет, куда вообще нужно вставлять элементы A HREF, и не просматривает все элементы searchResult , выводимые на странице, не говоря уже о правильном построении ссылки.
// First version
var elmNewContent = document.createElement('a');
elmNewContent.href = sCurrentHost;
elmNewContent.target = "_blank";
elmNewContent.appendChild(document.createTextNode('edit venue'));
var elmName = document.getElementById('name');
elmName.parentNode.insertBefore(elmNewContent, elmName.nextSibling);