我创建了一个 jquery 移动表单,并使用 PhoneGap 为平板电脑创建了移动应用程序。当表单完成后,用户点击一个按钮来创建一个 XML。
<div class="_100"><input type="button" id="DownloadButton" onclick="CreateXMLScript()" value="Create XML" /></div>
<div id="generated" style="display:none">
<h2>SiteVisit.xml</h2>
<a href="#" id="SaveLink">Save</a> (Right-click and choose <i>Save As...)</i>
<textarea id="ResultXml" style="width: 100%; height: 300em" readonly="readonly"></textarea>
</div>
JS
$(function () {
$('#DownloadButton').click(update);
});
var template = [
'<?xml version="1.0"?>',
'<SiteVisit xmlns="urn:schemas-microsoft-com:SiteVisit">',
'...',
'<field><?field?></field>',
'...',
'<field2><?field2?></field2>',
'</SiteVisit>'
].join('\r\n');
function update() {
var variables = {
'field': $('#field').val(),
'field2': $('#field2').val(),
};
var newXml = template.replace(/<\?(\w+)\?>/g,
function(match, name) {
return variables[name];
});
$('#ResultXml').val(newXml);
$('#SaveLink')
.attr('href', 'data:text/xml;base64,' + btoa(newXml))
.attr('download', 'SiteVisit.xml');
$('#generated').show();
}
if (!window.btoa) {
btoa = function (input) {
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var result = '';
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
result += chars.charAt(enc1) + chars.charAt(enc2) + chars.charAt(enc3) + chars.charAt(enc4);
} while (i < input.length);
return result;
};
}
XLM 生成精美,但“SaveLink”函数却没有。当在 android 上使用时(通过按下延长时间),我得到的只是复制或共享两者,它们只捕获表单而不是生成的 XML。我试图将“SaveLink”更改为电子邮件脚本,例如
function SaveLink()
{
document.getElementById("ResultXml").action = "mailto:";
document.getElementById("ResultXml").submit();
}
但没有布埃诺。我收到一封空的电子邮件。我想我需要在这里做点什么
$('#ResultXml').val(newXml);
$('#SaveLink')
.attr('href', 'data:text/xml;base64,' + btoa(newXml))
.attr('download', 'SiteVisit.xml');
$('#generated').show();
但我不知道是什么。对于长期发展的最后一个障碍的任何帮助将不胜感激