На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU, ANDLL, fatalist
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> The_Bat, ActiveX & JavaScript
    Когда мы однажды обсуждали на форуме хостинг, я сказал то, что повторю тебе сейчас: за сколько лодку купишь, так она и поплывет. Так что придется тебе пока помучиться.
      Trustmaster, в вопросе хостинга ты, без всякого сомнения, прав на все 100, но всё-таки приходиться довольствоваться тем, что есть. Хотелось бы услышать еще какой совет по JS в ракурсе данной темы, а то у меня тока одна идея в голове - писать процу OnTranslit(), которая переведет все русские буквы в английские... :( , но все-таки хочеться, чтобы тело письма на нормальном русском было
        Могу сделать функцию перевода русского языка в макросы для подстановки в писмо в HTML. Тут 2 момента: 1) не все клиенты поддерживают html, 2) Размер такого письма в несколько раз больше.
          Trustmaster, был бы благодарен, если алгоритмом поделишься (если, конечно, это не обычное замещение рус. символа html-кодом)... но этот варинт неприемлем, т.к. многие юзеры в последнее время настраивают mail-клиенты так, чтобы отправка писем осуществлялась в текстовом формате по умолчанию... хотя если генерировать на стороне клиента страничку и отправлять её уже потом по мылу (если такой вариант все-таки возможен), то идея очень неплохая... к сожалению, те кто защищен файрволом в этом случае наших стараний оценить не смогут :(
            Кодом-то я поделюсь, без проблем:
            ExpandedWrap disabled
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
              "http://www.w3.org/TR/html4/loose.dtd">
              <html>
              <head>
              <title>Untitled Document</title>
              <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
              <script>
              function safe_encode(str) {
                  var LAT_TABLE = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
                  var result = "";
                  var c = "";
                  for(var i = 0; i < str.length; i++) {
                      c = str.charAt(i);
                      if(LAT_TABLE.indexOf(c) == -1) {
                          result += '&' + str.charCodeAt(i) + ';';
                      }
                      else {
                          result += c;
                      }
                  }
                  return result;
              }
               
              function mail(text, address, subject, aObj) {
                  var href_str = "";
                  var safe_text = safe_encode(text);
                  var mail_body = "<html><head><title>" + subject + "</title></head><body>" + safe_text + "</body></html>";
                  href_str = "mailto:" + address + "?subject=" + subject + "&charset=windows-1251&ctype=text/html&body=" + mail_body;
                  aObj.href = href_str;
                  return true;
              }
              </script>
              </head>
              <body>
              <a href="javascript:void(0)" onClick="mail('Будет чудо, если это сработает!', 'somewhat@somewhere.com', 'Coool!', this)">Ссылка</a>
              </body>
              </html>

            Но этот вариант не работает. Как оказалось, аттрибут href ограничен по длине, так что твой способ отправки писем не подходит вообще. Так что либо серверные скрипты, либо письма придется писать вручную.
              Хорошо что я в своё время не полинился написать функцию
              конвертирующюу код символа из Unicode в Windows-1251.
              Пробуйте:
              [HTML]
              <html>
              <head>
              <title>Untitled Document</title>
              <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
              <script language=JScript>
              function toWin(N)
              {
              /*код громоздкий, но шустрый :)*/
              if(N<=127)R=N;else if(1040<=N&&N<=1103)R=N-848;else if(1026<=N&&N<=1027)R=N-898;else if(N==8218)R=130;else if(N==1107)R=131;else if(N==8222)R=132;else if(N==8230)R=133;else if(8224<=N&&N<=8225)R=N-8090;else if(N==8364)R=136;else if(N==8240)R=137;else if(N==1033)R=138;else if(N==8249)R=139;else if(N==1034)R=140;else if(N==1036)R=141;else if(N==1035)R=142;else if(N==1039)R=143;else if(N==1106)R=144;else if(8216<=N&&N<=8217)R=N-8071;else if(8220<=N&&N<=8221)R=N-8073;else if(N==8226)R=149;else if(8211<=N&&N<=8212)R=N-8061;else if(N==0)R=152;else if(N==8482)R=153;else if(N==1113)R=154;else if(N==8250)R=155;else if(N==1114)R=156;else if(N==1116)R=157;else if(N==1115)R=158;else if(N==1119)R=159;else if(N==160)R=160;else if(N==1038)R=161;else if(N==1118)R=162;else if(N==1032)R=163;else if(N==164)R=164;else if(N==1168)R=165;else if(166<=N&&N<=167)R=N;else if(N==1025)R=168;else if(N==169)R=169;else if(N==1028)R=170;else if(171<=N&&N<=174)R=N;else if(N==1031)R=175;else if(176<=N&&N<=177)R=N;else if(N==1030)R=178;else if(N==1110)R=179;else if(N==1169)R=180;else if(181<=N&&N<=183)R=N;else if(N==1105)R=184;else if(N==8470)R=185;else if(N==1108)R=186;else if(N==187)R=187;else if(N==1112)R=188;else if(N==1029)R=189;else if(N==1109)R=190;else if(N==1111)R=191;
              else R=63;//символ вопроса - '?'
              return R;
              }

              function uni2winEsc(s)
              {
              var res='';
              for(var i=0;i<s.length;i++)
              res+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.!~*'()#".indexOf( s.charAt(i) )>= 0 ? s.charAt(i) : "%"+toWin(s.charCodeAt(i)).toString(16).toUpperCase();
              return res;
              }

              function mail(text, address, subject) {
              location.href="mailto:" + address + "?subject=" + uni2winEsc(subject) + "&charset=windows-1251&body=" + uni2winEsc(text)
              }
              </script>
              </head>
              <body>
              <a href="javascript:void(0)" onClick="mail('Ну как? Работает?', 'somewhat@somewhere.com', '! Тема !')">Ссылка</a>
              </body>
              </html>
              [/HTML]
                Хочу сразу (пусть и с большим запозданием) извиниться перед Rom@nych, т.к. его код работает, но исключительно через IE, а потому он мне не подошел... Не знаю, чего эт я тогда сказал, что он совсем не рабочий???

                Mixxx,
                ExpandedWrap disabled
                   
                  function SendOrderNow() {
                      var tab=document.getElementById("PostTab");
                      var strBody='';
                      var str;
                      for (var i=1; i<tab.rows.length; i++) {
                          var perO='SendZak.ta_'+i+'.value';
                          if (tab.rows[0].cells[2].innerText=='Кол-во') {
                              strBody+=tab.rows[i].cells[1].innerText+' кол-во='+tab.rows[i].cells[2].innerText;
                              strBody+=' Описание='+eval(perO)+' /n';
                          }
                          else {
                              strBody+=tab.rows[i].cells[1].innerText+' Описание='+eval(perO)+' /n';
                          }
                      }
                      location.href='mailto:company@domen.ru?subject=The_Order&charset=windows-1251&body="'+uni2winEsc(strBody)+'"';
                  }

                не работает как под IE6, так и под Opera 7.10... даже если в uni2winEsc() изменять значение входящего параметра для toString()... мож я чего не понимаю?
                Проверял с отдельными словами - эффект тот же
                  Malicious Babai
                  Кавыки( " ) уберите:
                  ExpandedWrap disabled
                    location.href='mailto:company@domen.ru?subject=The_Order&charset=windows-1251&body='+uni2winEsc(strBody);

                  А у вас в опере просто ссылка
                  [html]
                  <a href="mailto:xxx@mail.ru">mailto test</a>
                  [/html]
                  работает???
                  Сообщение отредактировано: Mixxx -
                    Еще как! А ты сомневаешься?
                    Значит проблема в том, что Опера обрубает строку в href символах так на 256-ти.
                      Mixxx, все ссылки в Опере работают превосходно... и не только ссылки, но также и направление через location.href тоже
                      кстати, нашел ошибку в собственном коде, из-за которой uni2winEsc(strBody) не срабатывала, так что можете не переживать - функция рабочая, но через Оперу она в майл-клиент записывает следующее:
                      Цитата
                      2C2CE5EEDEF2FE8EEBEFFFF2FEEEF0FFB BEA--EE=1 ECEDEF= //

                      а там должна быть строка следующего типа
                      Цитата
                      Вентиляторы к-во=1 Оп=//

                      т.е. результат ровным счетом тот же, что и без применения этой функции :huh:

                      Trustmaster, на этот случай можно предусмотреть ограничение по количеству отправляемых элементов... хотя тут возникает серьезное неудобство, но другого выхода не вижу, ежели href ограничен величниной стандартной строки :unsure:
                      Сообщение отредактировано: Malicious Babai -
                        Trustmaster, кстати, мы с тобой оказались неправы в том, что строка URL-адреса должна быть не более 255 символов... Только в тело письма Опера 7+ передает до 500 символов, а IE, как минимум, раза в полтора больше :o , и это не говоря о сабже письма, адресе и пресловутом mailto:
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0327 ]   [ 15 queries used ]   [ Generated: 27.04.24, 20:04 GMT ]