Я уже много лет поддерживаю расширение Chrome для клиента, которое расширяет функциональность Gmail с помощью поддержки S / MIME с использованием крипто-смарт-карт.В старом интерфейсе Gmail мы взяли много информации из GLOBAL [17], в том числе:
- параметр ike
- - делегированный переключатель почтового ящика
- делегированные электронные письма
- язык интерфейса пользователя
- переключатель подписи электронной почты (включен / выключен)
- подпись электронной почты - добавляется в конце всех исходящих сообщений
Всю вышеуказанную информацию можно найти в других местах в GLOBALS или в Gmail DOM.Однако у меня была проблема с поиском информации о переключателе подписи и подписи электронной почты (в старом пользовательском интерфейсе это было в GLOBALS [17] [4] [1], свойства sx_mrsp_ *, bx_se).Я заметил, что новый пользовательский интерфейс Gmail загружает эту информацию со страницы, содержащей JavaScript _GM_setData с параметром JSON, который содержит очень похожую информацию, такую как GLOBALS.Раздел в загруженных данных начинается со строки '_ GM_setData ({"w43KIf": ["sdpc" ..' . Может быть, этот JSON может использоваться в качестве полной замены GLOBALS. Вот фрагмент кодаКод JS, который я реализовал для этой цели - если вы решаете подобные проблемы, вы можете использовать его для вдохновения (код требует JQuery и любую реализацию sprintf):
console.log(
"Going to download Gmail config to check for signature and signature switch.");
$.ajax(sprintf(
"https://mail.google.com/mail/ca/u/0/?ui=2&ik=%s&view=cm&fs=1&tf=1",
gmailConfig_ike), {
"type": "GET",
"accept": "html",
"error": function (response,
statusText1,
jqXHR1)
{
console.log("error getting config data (signature will be unavailable)):" + statusText1);
sendResponse(false);
},
"success": function (response,
statusText1,
jqXHR1)
{
// console.log("Data obtained: " + response);
var dom = $(response);
dom.filter('script').each(function ()
{
var myscript = this.text || this.textContent || this.innerHTML || '';
// console.log("script: " + myscript);
if (myscript.indexOf('["bx_se"') !== -1) {
console.log("bx_se found.");
//console.log(myscript);
var startToken = '_GM_setData({"';
var endToken = '"}); ';
var subscript = myscript.substring(myscript.indexOf(startToken) + startToken.length - 2);
// console.log("subscript: " + subscript);
var finalJSONString = subscript.substring(0,
subscript.indexOf(endToken) + 2);
// console.log("finalJSONString: " + finalJSONString);
var finalJSON = JSON.parse(finalJSONString);
//console.log(finalJSON);
// this locates the interesting information in the JSON object
var configArr = finalJSON.sBEv4c[2][1];
// console.log(configArr);
for (var k = 0; k < configArr.length; k++) {
var param = configArr[k];
if (param && param[0].indexOf("sx_mrsp_") == 0) {
console.log("Signature located: " + param[1]);
gmailConfig_signature = param[1];
}
if (param && param[0].indexOf("bx_se") == 0) {
console.log("Signature switch located: " + param[1]);
gmailConfig_signSwitch = param[1];
}
// if (param && param[0].indexOf("sx_dl") == 0) {
// console.log("Language located: " + param[1]);
// // gm_lang = param[1];
// }
}
}
});
sendResponse(true);
}
});