Internet Explorer 11の[リンク]リンクをクリックする権限が拒否されました -- javascript フィールド と jquery フィールド と angularjs フィールド と internet-explorer フィールド と internet-explorer-11 フィールド 関連 問題

Permission denied for clicking link in Internet Explorer 11












8
vote

問題

日本語

私は顧客を追加することによって、顧客を追加することによって顧客をリストする既存のAngularJS-Appを修正しました。これにより、顧客情報をvCardとしてダウンロードすることができます。クリックするとともにJavaScriptでvCardを直接作成します。ダウンロードボタンは、顧客項目を引数としてクリックして次の機能を呼び出します。

<事前> <コード> 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; }

createvcard-functionでは、ファイルの内容を文字列として作成するだけなので、問題に入力しないでください。トランスコーディングはこのライブラリによって行われます。 https://github.com/inexorabletash/text-encoding

FirefoxとChromeでは問題なく機能しますが、IE11では機能しません。コンソールに次のエラーが表示されます。

<事前> <コード> 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上記の関数のこの命令です:

<事前> <コード> document.getElementById(aId).click();

このステートメントが手動で入力されると同じエラーが表示されます。

私は理由についてすべてのヒントを感謝し、さらに良い回避策。

編集

訂正誤差線と版

英語

I modified an existing AngularJS-App, which lists customers, by adding a button, that allows to download the customer information as a vcard. I create the vcard in Javascript directly on click. The download-button calls the following function on click with the customer-item as argument:

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; } 

In the createVCard-function I just create the file content as a String, so it should not enter into the problem. The transcoding is done by this library: https://github.com/inexorabletash/text-encoding

The function works without problem in Firefox and Chrome, but not in IE11. The following error is given in the console:

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 

Line 169 is this instruction of the function above:

document.getElementById(aId).click(); 

The same error is displayed, when this statement is input in the console manually.

I would appreciate every hint about the reason and even more a good workaround.

EDIT

Corrected error-line and typo.

</div
              
       
       

回答リスト

21
 
vote
vote
ベストアンサー
 

Microsoft IEでは直接BLOBを開くことはできません。 window.navigator.msSaveOrOpenBlob を使用する必要があります。 <コード> msSaveBlob もあります。

<事前> <コード> find0

最後のこと:Firefoxが find1 をサポートしていないため、前のコードはFirefoxでは機能しません。このスニペットを使用した<コード> find2 その動作:

<事前> <コード> find3
 

You cannot directly open blobs in Microsoft IE. You must use window.navigator.msSaveOrOpenBlob. There's also msSaveBlob if that's what you need.

$scope.download = function() {     //etc... logic...     var blob = new Blob([encoded], {type: 'vcf'});      //for microsoft IE     if (window.navigator && window.navigator.msSaveOrOpenBlob) {         window.navigator.msSaveOrOpenBlob(blob, fileName);     } else { //other browsers         var a = document.createElement('a');         a.style = "display:none";         a.href = URL.createObjectURL(blob);         a.download = "filename.jpg";         a.click();     } } 

One last thing: the previous code won't work on firefox because firefox doesn't support click(). You can prototype its behavior using this snippet:

HTMLElement.prototype.click = function() {    var evt = this.ownerDocument.createEvent('MouseEvents');    evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);    this.dispatchEvent(evt); } 
</div
 
 
   
   

関連する質問

1  Ajax呼び出し後にIE11で編集できません  ( Ckeditor not editable in ie11 after ajax call ) 
例: jsfiddle ページが初めてロードされている場合、CKEditorが正しく機能しており、エディタの値を編集できます。次の機能を呼び出しているボタン「Ajax」を押した後(カーソルはエディタフィールドになければなりません): <事前> <コード...

0  Internet Explorer JavaScriptによる基本認証を再現する方法  ( How to reproduce internet explorer basic authentication with javascript ) 
JavaScriptを使用してWebアプリにログインすることになると実際に問題に直面しています。これはセレンテスト目的のためのものです アプリケーションを手動で閲覧するとき、すなわち、auth popupを履修すると、ユーザーはWebアプリにアクセスするため...

1  Sprite AnimationがWobly / IE11でジャンプする  ( Sprite animation wobbly jumping in ie11 ) 
私は https: //www.srf.ch/static/srf-data/test_spriite.png それは17280pxの高さと910px幅のPNGです(30 * 576 = 17280) - すべてが正しいようです。 <コード> backg...

5  Angular 2 - IE11プロパティ 'webpackjsonp'の値はNULLまたは未定義で、関数オブジェクトではありません。  ( Angular 2 ie11 the value of the property webpackjsonp is null or undefined ) 
私は怒っている2に慣れています。 Angular / Angular-CLI )とサンプルプロジェクトを作成しました。 今、私は "ng build_prod"を使ってアプリを構築し、IISでホストされている "dist"フォルダを持っていました。 IE11で...

1  array.prototype.find()VI IE11  ( Array prototype find vs ie11 ) 
href="https://caniuse.com/##search=find" rel="nofollow noreferrer"> https://caniuse.com/#search=find states find()メソッドを述べますIE11で...

1  BeForEnavigate2イベントが32ビットWindows 7 Internet Explorer 11では機能しません11  ( Beforenavigate2 event does not work on 32 bit windows 7 internet explorer 11 ) 
C#にBHOを実装しました。これはBeforEnavigate2イベントを使用します。 64ビットのWindows 7システムでInternet Explorer 11で作業しています。 32ビットのWindows 7システムでは、BeforEnavigat...

1  FullCalendar、IE 11、RefetchEvents Debugger / Developerウィンドウ[F12]が開いている場合にのみ発生します  ( Fullcalendar ie 11 refetchevents only fires when debugger developer window f1 ) 
問題: FullCalendarは、Succesfull Ajax呼び出し後に .fullCalendar('refetchEvents') を使用してイベントを更新しません。 を使って MSIE 11.0.41(11.0.9600.1863...

4  Internet Explorer(IE11)はCSSの破断内を無視します。  ( Internet explorer ie11 ignores css break inside avoid ) 
2列ボックス(<コード> column-count: 2 )では、CSS設定<コード> break-inside: avoid は、ある列から他方の列に壊れることを避けるべきです。これはFirefoxとChrome(適切な-webkit ... namesを...

3  絶対に配置された親が絶対に配置されているのを軽減する方法はどのようにしていますか。  ( How can i make wider list children spill out of their absolutely positioned pare ) 
動的に取り入れられたアイテムを含むリストを持っているので、その絶対位置の親よりも広くなる必要があります(カスタム<コード> <select> 要素実装です)。 <コード> #wrapper { position: relative; ...

0  C#のIE 11でDropDownListを使用する  ( Use dropdownlist in ie 11 in c sharp ) 
IE 11で dropdownlist を使用する問題があります。 dropdownlist の値を選択すると、イベント onSelectedIndexChanged 焼成しません。 私は4から4.5のフレームワークバージョンを更新することはできません...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有