2013-09-13 2 views
0

Попытка создать простую функцию «mailto» с помощью javascript. Мне просто нужно иметь возможность отправлять некоторые ссылки (например: см. Эту статью bla bla).Javascript mailto string loses encodeURI encoding

Некоторые из ссылок, которые мне нужно отправить, включают пробелы, датские символы. Поэтому я использовал функцию encodeURI() .

Проблема возникает, когда я пытаюсь отправить ссылку (пример кода)

 var _encodedPath = encodeURI(path); 
     var _tempString = "mailto:[email protected]?subject=Shared%20from%20some%20page&body=" + _encodedPath; 

Если я вывожу _tempString на консоль я правильно закодированную строку. Однако при использовании той же строки в 'mailto' строка теряет свою кодировку и возвращается к тому, как она была раньше.

Любая подсказка, почему это так?

Заранее спасибо :)

+0

Вы имеете в виду, что он показывает декодированную ссылку в строке состояния браузера при зависании? Это может быть просто, что ваш браузер расшифровывает его, чтобы показать удобную для пользователя mailto: link. Является ли ваш mailto: работает как ожидалось? – plalx

ответ

0

Ссылка декодируется при нажатии на нее - это нормально. Поскольку у вас есть ссылка http в канале mailto, она должна быть закодирована дважды.

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

В электронной почте, лучший способ сохранить ссылку смежный, чтобы заключить его в угловых скобках, как это:

< http://www.example.com/url с пробелами >

Но это не является надежным. Электронная почта является хрупкой, и вы не можете контролировать контент достаточно хорошо с помощью ссылки mailto. Возможно, было бы лучше попытаться уменьшить сложность URL-адреса - возможно, предоставив или воспользовавшись услугой url-shortener. Любой URL-адрес, длина которого превышает 74 или около того, скорее всего, будет искажена некоторыми почтовыми клиентами.

-1

этот сайт помог мне решить любые проблемы с MailTo ссылки:

http://www.1ngo.de/web/formular.html

может быть это не самый хороший способ, но он всегда работает с каждым браузером я знаю. И у него также есть очень классный алгоритм, предназначенный для форматирования контента, чтобы все было в порядке. Просто попробуйте и немного поиграйте с кодом, процитировав части кода, и вы очень быстро поймете, что именно там происходит и как его изменить для ваших пожеланий. Althoug немного поздно, я надеюсь, что это поможет кому-нибудь проверить этот вопрос.

althoug Это на немецком языке, вам просто нужно скопировать показанный там код и запустить его и поэкспериментировать с ним.

+0

Это более или менее вопрос только для ссылок, который не отвечает конкретно на заданный вопрос. – arne