Как написать usercript, который вытаскивает адрес электронной почты из Zendesk?
Я написал скрипт Tamper Monkey (Chrome) для извлечения адреса электронной почты из нашего билета Zendesk, а затем добавил ссылку для поиска этого пользователя в наших инструментах администратора на другой вкладке. Это работает, но только последовательно, если вы обновите страницу, когда получите новый билет (в противном случае вы получите значение последнего запроса, который вы искали).
Основываясь на проверке элементов, похоже, что Zendesk использует Ember. Это означает, что Zendesk имеет свои собственные вкладки, расположенные внутри страницы, так что при переходе по сайту вы не всегда обязательно перезагружаете страницу.
Я не могу понять, как сделать так, чтобы он всегда был актуальным (со значением адреса электронной почты текущего билета) без обновления, и я также не мог понять, как заставить его работать без timeOut... Когда я сделал это на основе документа готов или окна загрузки, это не работает правильно. Я подозреваю, что мое плохое понимание состояний загрузки Embed также является виновным и здесь.
PS. Я использую noConflict, потому что я думаю, что Ember также использует знак $, но также не уверен, если это необходимо. Любая помощь будет оценена! СПАСИБО!
// ==UserScript==
// @name User lookup
// @namespace Metronome
// @version 0.2
// @description Checks ticket email address and looks up in admin tools
// @author Tphlat
// @include https://*.zendesk.com/agent/tickets/*
// @grant none
// ==/UserScript==
$.noConflict();
jQuery( document ).ready(function() {
console.log( "DOCUMENT LOADED" );
});
jQuery(window).on('load', function () {
console.log( "WINDOW LOADED" );
// alert('READY WINDOW');
});
window.onload = function() {
function myFunc(){
var email = document.querySelector("a.email").innerHTML;
email = email.replace(/\@/g,'%40');
console.log(email);
var linkOut = " <strong><a href='https://example.com/admin/users?username=" + email + "' target='_blank' style='background-color:yellow;'>\/ LOOKUP \/</a></strong>";
jQuery('div.source.delimited_items').append(linkOut);
}
setTimeout(myFunc, 2000);
};