我创建了包含 JavaScript 的 NSString。
NSString * someString =@"<!DOCTYPE html>\n <html>\n <body> \n
<h1>My Web Page</h1> \n <p id=\"myPar\">I am a paragraph.</p><div id=\"myDiv\">I am a div.</div> \n <p> <button type=\"button\" onclick=\"myFunction()\">Try it</button> \n </p> <script type=\"text/javascript\"> function myFunction() { document.getElementById(\"myPar\").innerHTML=\"Hello Dolly\"; document.getElementById(\"myDiv\").innerHTML=\"How are you?\";\n } </script> <p>When you click on \"Try it\", the two elements will change.</p> \n </body> \n </html>\n";
之后,我使用该字符串设置电子邮件正文。
MFMailComposeViewController* Apicker = [[MFMailComposeViewController alloc] init];
if (Apicker != nil)
{
Apicker.mailComposeDelegate = self;
}
[Apicker setMessageBody:someString isHTML:YES];
[self presentModalViewController:Apicker animated:YES];
我发送电子邮件。
我的问题是,当我检查该邮件并按下 Try it
按钮时,它不起作用。
如果我在 someString
对象中使用简单的 HTML,它就可以工作。
为什么 JavaScript 在电子邮件中不起作用?
最佳答案
出于安全原因,大多数电子邮件客户端(包括 iPhone)不支持 JavaScript。
例如,可以在电子邮件中嵌入恶意脚本,如果电子邮件被阅读,该脚本会向发件人报告,从而允许垃圾邮件发送者验证电子邮件地址。
使用 CSS 伪类 :focus
,您可以在 CSS 中实现类似的功能。
虽然这有其局限性(例如不能将按钮放在 HTML 元素之后而不是在它们前面),但这是要求收件人点击进入网页的唯一选择;电子邮件仅限于 HTML 和 CSS。
HTML:
<button type="button">Try it</button>
<p id="myPar"><span class=oldtext>I am a paragraph.</span><span class=newtext>Hello Dolly</span></p>
<div id="myDiv"><span class=oldtext>I am a div.</span><span class=newtext>How are you?</span></div>
<p>When you click on "Try it", the two elements will change.</p>
CSS:
/*
Default state
*/
button+#myPar .oldtext,button+*+#myDiv .oldtext{
display:inline;/* Not required because <span> tags are inline by default. Use if you use block-level elements and / or elements that are styled as block-level elements */
}
button+#myPar .newtext,button+*+#myDiv .newtext{
display:none;
}
/*
Button click effect
*/
button:focus+#myPar .oldtext,button:focus+*+#myDiv .oldtext{
display:none;
}
button:focus+#myPar .newtext,button:focus+*+#myDiv .newtext{
display:inline;
}
↪ View this example at JSFiddle
注意:根据can I use ,此示例中使用的 CSS 与 iOS 兼容。它将不在 IE < 9 中工作。
关于JavaScript 函数在 iOS 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12892438/