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();
しかし、私は何を知りません。長い開発のこの最後のハードルを乗り越える助けがあれば大歓迎です