0

我创建了包含 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按钮时,它不起作用。

如果我在对象中使用简单的 HTML someString,它就可以工作。

为什么 JavaScript 在电子邮件中不起作用?

4

2 回答 2

3

出于安全原因,大多数电子邮件客户端(包括 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;
}

在 JSFiddle 查看这个例子

注意:根据can I use,本示例中使用的 CSS 与 iOS 兼容。它不适用于 IE < 9。

于 2012-10-15T10:54:52.677 回答
1

出于安全原因,大多数电子邮件客户端(包括 iPhone)不支持 JavaScript。

例如,可以在电子邮件中嵌入恶意脚本,如果电子邮件被阅读,该脚本会向发件人报告,从而允许垃圾邮件发送者验证电子邮件地址。

于 2012-10-15T09:12:10.793 回答