JavaScript 函数在 iOS 中不起作用

标签 javascript html objective-c ios mfmailcomposeviewcontroller

我创建了包含 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/

相关文章:

javascript - 如何在 sequelize.js 中有条件地加载关联?

javascript - 查询 : Keypress not working on first press

javascript - jquery中带有箭头的简单下拉列表

ios - 如何从 iOS 连接到本地 Google App Engine 端点?

Objective-C 新手 : Does anyone know of diagrams that explain class, 对象和方法?

objective-c - C printf 函数帮助

javascript - 如何使左/右箭头出现在悬停时?

javascript - 网络 worker : NotFoundError when I try to read a file created in the main thread

html - 无法解码 Firefox 媒体资源文件.wav

javascript - 如何在禁用的字段集中启用 div 元素?