カスタマー情報をvcardとしてダウンロードできるボタンを追加することで、顧客をリストアップする既存のAngularJS-Appを修正しました。 Javascriptでvcardをクリックして直接作成します。それが問題に入るべきではありませんので、私は単なる文字列としてファイルのコンテンツを作成createVCard機能でInternet Explorer 11のリンクをクリックする権限が拒否されました
function transcodeToAnsi(content){
var encoding = "windows-1252";
var nonstandard = {NONSTANDARD_allowLegacyEncoding: true};
return new TextEncoder(encoding, nonstandard).encode(content);
}
$scope.download = function(item) {
var filename = 'contact.vcf';
var aId = "vcard";
var content = createVCard(item);
var encoded = transcodeToAnsi(content);
var blob = new Blob([ encoded ], { type : 'vcf' });
var url = (window.URL || window.webkitURL).createObjectURL(blob);
$("body").append('<a id="' + aId + '" href="' + url + '" download=' + filename + ' class="hidden"></a>');
$timeout(function(){
document.getElementById(aId).click();
$("#" + aId).remove();
})
return false;
}
:ダウンロードボタンは、引数として、顧客項目でクリックで次の関数を呼び出します。トランスコードはこのライブラリで行います:https://github.com/inexorabletash/text-encoding
この機能はFirefoxとChromeでは問題なく動作しますが、IE11では動作しません。次のエラーがコンソールに与えられている:このステートメントを手動コンソールに入力された場合、同じエラーが表示され
document.getElementById(aId).click();
:
Error: Permission denied
at Anonymous function (http://***/Contacts2015/js/contacts.js:169:9)
at Anonymous function (http://***/static/9bojdXAkdR8XdVMdSTxZAgzEwGWhHMwgpuONdU2Y8F4.js:14305:11)
at completeOutstandingRequest (http://***/static/9bojdXAkdR8XdVMdSTxZAgzEwGWhHMwgpuONdU2Y8F4.js:4397:7)
at Anonymous function (http://***/static/9bojdXAkdR8XdVMdSTxZAgzEwGWhHMwgpuONdU2Y8F4.js:4705:7) undefined
ライン169上の関数のこの命令です。
私はその理由と、さらに良い回避策についてのヒントをいただきたいと思います。誤差線と誤植を修正
EDIT
。
あなたがDOMに 'aId'リンクを追加ので、これは問題になるかもしれない - 再びそれを削除する方法がわからないことが考えられます。私はDOMの追加要素を削除してみることをお勧めします。 – Forest
@Furze申し訳ありませんが、私の間違いです。私は間違った行を印刷した...私はそれを変更しました。 –
'document.getElementById(aId).click();'を '$("# "+ aId).trigger(" click ");'に変更してみてください。 – Forest