2012-10-15 263 views
0

我创建了包含JavaScript的NSString。JavaScript功能在iOS中不可用

NSString * someString [email protected]"<!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不能在电子邮件中工作?

回答

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; 
} 

View this example at JSFiddle

注意:根据can I use,在此EXA使用的CSS Mple是iOS兼容的。它会工作在IE < 9.

1

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

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

+0

所以,我怎么能做到没有javascript的相同功能?我在iPad上测试它。 – kEvin

+0

@ user2428118,是的,你是对的,我怎么能创建这样的按钮在HTML身体没有javascript.do你有什么想法? – kEvin

+0

@kEvin:也许你可以使用CSS3技术来实现这一点。尽管我不确定他们是否支持iOS。 [示例](http://jsfiddle.net/7PRwc/) – user2428118