当用户使用javascript mailto:
点击表单的提交按钮时,我正在尝试打开Outlook当我从chrome或firefox提交表单时,它能够打开但在IE中我收到以下错误:
命令行参数无效,请验证您正在使用的开关
答案 0 :(得分:1)
我不确定你做了多少研究,但是当你查找错误时谷歌的第一个结果导致了一个似乎已经解决的微软主板:
https://support.microsoft.com/en-us/kb/312346
据我所见,您的问题与URI Schema" mailto"的文件关联有关。我建议您按照链接中的步骤进行操作,并在下次详尽搜索。
答案 1 :(得分:0)
Microsoft Knowledge Base article很有帮助,但这只是一种解决方法:
<强>问题:强>
我的mailto值来自Angular,而我的mailto有特殊字符。我只能使用Angular's ng-href
(JSFiddle)重新创建此问题。我无法使用plain HTML (JSFiddle)重新创建此问题。
<强>解决方案:强>
Solution JSFiddle here;我的问题再次针对Angular / ng-href
,因此我的解决方案使用Angular / ng-href
。
在我的情况下,我的mailto href属性值包括双引号(即'"'
)。双引号是转义(带反斜杠),但是没有编码我需要URLEncode我的mailto值。这很直观,因为href
属性通常指向一个网址,URLs require percent-encoding.
<a href="mailto:person@place.com?subject=Subject includes \"double-quotes\"">Mail link</a>
当我encodeURIComponent
时,只有 subject
值:encodeURIComponent("Subject includes \"double-quotes\"")
并更新该部分。结果在这里;注意新主题中的%20和%22:
<a href="mailto:person@place.com?subject=Subject%20includes%20%22double-quotes%22">Mail link</a>
注意强>:
我有双引号(即'"'
或%22),但不同的字符可能导致问题:我怀疑{{3}可能会导致此问题。
看起来空格(即' '
或%20)不会导致问题,即使编码前的也是如此。 在之后我开始使用encodeURIComponent
,我可能修复了可能导致此问题的任何/所有其他花哨字符,即'&'
或其他人。 。)
我不确定other URL-unsafe characters;即,subject
参数的处理方式与body
参数或隐含的to
参数不同。所以我对encodeURIComponent
和subject
使用了body
。
小心不进行过度编码。仅对单独的subject
和body
参数进行编码:
:
后面的mailto
;浏览器可能无法识别这是mailto链接(请参阅解决方案)?
)或等号(即=
)进行编码;浏览器/ Outlook可能无法解析参数(请参阅解决方案)所以当我编码:
encodeURIComponent("mailto:person@place.com?subject=Subject includes \"double-quotes\"")
注意结果;错误地编码冒号(即%3A)和等号(%3D)
"mailto%3Aperson%40place.com%3Fsubject%3DSubject%20includes%20%22double-quotes%22"
小心不要双重编码,即编码已编码的字符串!
我将从问题中删除Java标记;我同意评论parameters have different requirements