MailTo, используя параметры браузера в новом окне IE 8 - PullRequest
0 голосов
/ 23 марта 2012

Ниже приведен HTML

<a id="LnkEmail" onclick="doMailto('d@s.com');" href="javascript:void(0);">
<span id="LblEmail">ABC</span></a>

Javascript

<script type="text/javascript">
    function doMailto(EmailAddress) {
        document.location.href = window.open('mailto:' + EmailAddress, 'new window');
    }

</script>

В FireFox оно открывает изображение при нажатии на промежуток, как показано ниже.

enter image description here Запрос - в IE 8 - при нажатии ничего не происходит. Любая идея?

Ответы [ 6 ]

9 голосов
/ 26 марта 2012

Функция выбора всплывающих окон является родной для Firefox и НЕ доступна в Internet Explorer, поскольку Internet Explorer обрабатывает сопоставление непосредственно из Windows, вашей операционной системы.Таким образом, любая программа, предназначенная для обработки mailto: ссылок на вашем компьютере, будет открываться (чаще всего Outlook Express).Не существует единого способа избежать этого, поскольку вы не можете контролировать, с чем пользователь решит открыть этот протокол.Мое предложение - написать контактную форму POST asp.net.Я сам не являюсь разработчиком ASP.NET, но я нашел для вас этот урок: http://www.jimcobooks.com/tutorials/emailform1/default.aspx

Чтобы проверить эту теорию: попробуйте найти компьютер без почтового клиента (без Outlook, Outlook Express и т. Д.) Internet Explorer предложит программе открыть протокол.

Еще один тест (как я тестировал). Я настроил Google Chrome для обработки всех запросов mailto: и перенаправления их в мой интерфейс Gmail Webmail.Когда я проверил вашу ссылку и изменил ваше имя ветра в jsfiddle (http://jsfiddle.net/sHYW8/2/), Windows спросила меня, может ли IE открыть Google Chrome для обработки протокола.

Краткий ответ: то, что вы спрашиваете, технически невозможноесли вы не заставляете всех своих пользователей устанавливать сторонние дополнения для IE.Это результат того, что Internet Explorer является частью операционной системы Windows, а Mozilla Firefox является сторонним браузером, который вынужден обрабатывать протоколы по-своему.

ОБНОВЛЕНИЕ

Я нашел плагин jQuery, который использует API для Gmail, Yahoo!и MSN.Это не всплывающее окно, а скорее опрокидывание.Я думаю, это будет ваша ближайшая ставка.

http://kevin -cantwell.github.com / webmailto /

Хорошо, что реализация кажется простойдовольно.Я бы посмотрел на нижний пример, он выглядит довольно гладко.

3 голосов
/ 28 марта 2012

попробуйте это:

function doMailto(EmailAddress) {
    document.location.href = 'mailto:' + EmailAddress;
}

Я думаю, что ваш IE предотвращает всплывающие окна, созданные javascript.

Просто чтобы было ясно ...

Предложение Адриано просто использовать обычный HTML-тег также будет работать. Как это:

<a id="LnkEmail" href="mailto:d@s.com">

И как Вишал и Кайл Мэйси пытались объяснить: Это окно «Launch Application», которое появляется в Firefox ... это не окно, которое вы можете создать с веб-страницы. Это собственное окно Firefox, которое отображается при нажатии на ссылку mailto :. IE не предлагает окна того же типа. Обычно он просто открывает почтовый клиент по умолчанию (в вашем случае это, вероятно, Outlook).

и наконец ... Javascript - это не то же самое, что JQuery. JQuery написан на Javascript, но JQuery НЕ является Javascript.

1 голос
/ 23 марта 2012

Только для IE 7 и 8 вы не можете использовать пробелы в имени окна.Попробуйте изменить свой код на:

window.open('mailto:' + EmailAddress, 'Mail');
0 голосов
/ 01 апреля 2012

Список рассылки - это служебная функция, предоставляемая только Firefox. Вы можете или не можете найти функцию одного программного обеспечения на другом подобном. Если вы этого не сделаете, вы должны согласиться на работу вокруг.

Постарайтесь запомнить, что в Firefox, когда пользователь выбирает почтовый клиент по умолчанию, всплывающее окно больше не будет. Поэтому нет смысла пытаться создать решение, которое не будет постоянным.

Чтобы сократить ваши требования, вы пытаетесь выбрать почтовый клиент пользователя. Но веб-сайт не может изменить системные настройки пользователя, его просто не разрешают. Зачем? Потому что это открывает много уязвимостей для пользователя, если это как-то разрешено.

0 голосов
/ 28 марта 2012

Если вы действительно хотите такой список , есть способ с чистым javascript, хотя он может быть не таким, как в настоящее время в Firefox. Что вы можете сделать, это создать модальное диалоговое окно с javascript, показывающим количество популярных клиентов веб-почты и опцию «системный клиент по умолчанию» вместо «Microsoft Office Outlook». «Выбрать приложение» было бы также невозможно включить. Далее, если пользователь выбирает собственный клиент, вы просто запускаете ссылку mailto, как вы делаете в данный момент, и в случае, если пользователь выбирает, например, gmail, вы открываете окно, открывающее ссылку вдоль строк

https://mail.google.com/mail/?view=cm&fs=1&tf=1&source=mailto&to=info@example.com&body=the+body+of+your+message

с вашими собственными переменными, конечно, по вашей ссылке mailto. Вам нужно будет самостоятельно найти соответствующие ссылки для различных служб веб-почты, но, насколько я знаю, у большинства из них есть такие ссылки, а у gmail и Yahoo точно.

0 голосов
/ 27 марта 2012

Ниже приведен рабочий код, как вы упомянули

window.open ('mailto:' + EmailAddress, 'newwindow');

работает, но, как и FF IE, не предоставляет вам возможность выбрать почтовый движок. Если вы хотите запустить свой код, вы должны установить программу по умолчанию для почты, используя программу по умолчанию. И вы можете установить только Outlook в качестве программы по умолчанию. В любом случае вы можете связать любую вещь, такую ​​как Yahoo или Gamil, таким образом, вы можете использовать свой почтовый код для IE.

Я думаю, что для этого вам нужно написать код, потому что IE не предоставляет никаких дополнений, как FF.

Для этого сначала вы должны проверить, если клиент по умолчанию может там или нет, используя следующий код

RegistryKey hkey = Registry.ClassesRoot.OpenSubKey ( "mailto \ shell \ open \ command", false);

если этот ключ имеет значение null, то клиент по умолчанию отсутствует. так что вы должны показать список почтовых сообщений во всплывающем окне. и выбранного провайдера вы должны установить в качестве почтового клиента по умолчанию.

http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.classesroot(v=vs.90).aspx Используя вышеуказанную ссылку, вы можете найти список почтовых сообщений, зарегистрированных на аппарате, для отображения списка.

http://www.pcreview.co.uk/forums/re-add-dword-value-registry-t1401434.html по этой ссылке показано, как установить значение в реестре.

затем введите свой почтовый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...