HighRise jQuery análisis
-
19-09-2019 - |
Pregunta
Quiero añadir H323: enlaces estilo de número a los números de contacto HighRise, por lo que los usuarios pueden hacer clic en un enlace para marcar el teléfono IP ...
El código HTML que estoy viendo es:
<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>
y, básicamente, quiero sacar el número que está en un td y que comienza con 44, tira a los espacios y se adhieren en un enlace dentro del lapso que tiene un href como
h323:4411231231312
es decir. se Excluyendo el 0 entre paréntesis.
Cualquier ayuda sería recibida con gratitud a cualquiera de lo siguiente.
(1) ¿Cómo puedo coincidir con el TD que contiene + \ d \ d números? (2) ¿Cómo puedo usar selectores para excluir el lapso cuando llegue el número de la td (3) ¿Qué expresiones regulares debo usar para limpiar el número para el href?
Solución
Esto debería estar cerca de lo que necesita.
$('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);
}
});
Una palabra de precaución sin embargo, si el contenido de un span
comienza con un dígito que se incluirá en el partido; Es esta una posibilidad que debe tenerse en cuenta?
Otros consejos
Aquí está el script de Greasemonkey final - que podría ser útil para alguien ...
// ==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);
}
});
}
})();