HighRise analyse syntaxique jQuery
-
19-09-2019 - |
Question
Je veux ajouter H323: liens de style nombre de numéros de téléphone Highrise, afin que les utilisateurs peuvent cliquer sur un lien pour composer le téléphone IP ...
Le html je regarde est:
<table>
<tbody>
<tr>
<th>Phone</th>
<td>+44 (0)1123 1231312<span>Work</span></td>
</tr>
<tr>
<th></th>
<td>+44 (0)777 2342342<span>Other</span></td>
</tr>
</tbody>
</table>
et, fondamentalement, je veux tirer le numéro qui est dans un td et qui commence par +44, dépouiller les espaces et coller dans un lien dans la durée qui a un href comme
h323:4411231231312
i.e.. est le décapage à 0 entre parenthèses.
Toute aide serait reçue à greatfully une des conditions suivantes.
(1) Comment puis-je correspondre td + contenant \ d \ d chiffres? (2) Comment puis-je utiliser des sélecteurs pour exclure la durée quand je reçois le numéro de la td (3) Que dois-je utiliser regex pour nettoyer le numéro du href?
La solution
Cela devrait être proche de ce que vous avez besoin.
$('tbody td').each(function() {
// match a sequence of digits, parentheses and spaces
var matches = $(this).text().match(/[ \d()]+/);
if (matches) {
// remove the spaces and stuff between parentheses
var href = 'h323:' + matches[0].replace(/\s|\(.*?\)/g, '');
var link = $('<a/>').attr('href', href);
$('span', this).append(link);
}
});
Un mot d'avertissement cependant, si le contenu d'un span
commence par un chiffre, il sera inclus dans le match; est-ce une possibilité qui doit être pris en compte?
Autres conseils
Voici le script Greasemonkey final - pourrait être utile pour quelqu'un ...
// ==UserScript==
// @name HighRise Dialler
// @namespace
// @description Adds a CALL link to HighRise Contacts.
// @include https://*.highrisehq.com/*
// @require http://code.jquery.com/jquery-latest.min.js
// ==/UserScript==
(function(){
GM_xmlhttpRequest({
method: "GET",
url: "http://jqueryjs.googlecode.com/files/jquery-1.2.6.pack.js",
onload: run
});
function run(details) {
if (details.status != 200) {
GM_log("no jQuery found!");
return;
}
eval(details.responseText);
var $ = jQuery;
//do something useful here....
$('table td').each(function() {
var matches = $(this).text().match(/^\+*?[\d\(\) ]+/);
if (matches) {
var href = 'h323:' + matches[0].replace(/\+44|\+|\s|\(|\)/g, '');
var link = $(' <a>CALL<a/>').attr('href', href);
$(this).find('span').append(link);
}
});
}
})();