событие не запускается после сборки элементов в js - PullRequest
0 голосов
/ 07 февраля 2019

Скрытие адресов электронной почты путем сборки mailto: href в js.

ОБНОВЛЕНИЕ Теперь пытаюсь создать универсальную функцию, которую я могу вызывать где угодно.Появляется ошибка "not func" при передаче this.id в var

onclick="mailTo(this.id,'aTLD','aDOMAIN','anACCOUNT','aWEBSITE','I have a website question or issue.');"

function mailTo( idx , tld , domain , account , site , bodyText ) {
let qS = `document.querySelector('#${idx}')`;
console.log(qS);
let arrEmail = [tld, domain, account, site, bodyText];
const buildEmail = (arr) => `${arr[2]}@${arr[1]}.${arr[0]}?subject=From the ${arr[3]} website&body=${arr[4]}`;
qS.addEventListener('click', (event) => {
let str = `mailto:${buildEmail(arrEmail)}`;
location.href = str;
});
}

PREVIOUS В 2006 году использовались строки eval (args +)"+ vars) и работал нормально, но это опасная опасность для пользователя + ресурсный бегемот.Попытка возврата (vars + args), но не срабатывает.console.log / alert () s показывают, что строка собирается правильно.

//###(UNIVERSAL FUNCTION ASSEMBLES MAILTO HREF TO DETER HARVESTERS]###
var html1 = "\"location.href=\'mailto:";
var html2 = "?";
var html3 = "\&bcc=";
var html4 = "@";
var html5 =  ".";
var html6 = "\'\"";
var html7 = "Inquiry%20from%20";
var html8 = "%20site.";
var header = "subject=";
var body = '';
var domain = '';
var account = '';

function mail_To(tld , domain , account , site , bodyText) {
domain = domain + ".";
account = account + "@";

if( bodyText != ' ' ) {
    var body = "&body=" + bodyText
    } else {
    var body = ' ';
    }
    return( html1 + account + domain + tld + html2 + header + html7 + site +html8 + body + html6 );
}
<body>
<span onclick="mail_To('us','puppymillfree','we.want','Puppy Mill Free US','test Body text')">
</body>

консоль печатает как положено (с кавычками):

"location.href='mailto:we.want@puppymillfree.us?subject=Inquiry%20from%20Puppy Mill Free US%20site.&body=test Body text'"

Но не уверен, как стрелять.При использовании метода eval () вместо оператора return срабатывает событие, клиент электронной почты запускается с полями адреса и заполненным телом.

1 Ответ

0 голосов
/ 07 февраля 2019

Просто интересно, почему вся эта тяжелая работа, может быть, просто встроить письмо в саму функцию щелчка?

// Just simple sample obfuscation
let arrEmail = ['some', 'com', 'where', 'somewhere'];
const buildEmail = (arr) => `${arr[0]}@${arr[3]}.${[1]}`;

document.querySelector('#email').addEventListener('click', (event) => {
  let str = `mailto:${buildEmail(arrEmail)}`;
  location.href = str; 
});
<span id="email">Send a mail</span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...