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