it-swarm.com.de

Zugriff verweigert Fehler auf IE8

Ich habe ein HTML-Formular ( upload.htm ) mit einem darin enthaltenen Steuerelement zum Hochladen von HTML-Dateien.

<form id="frmupload" name="upload" enctype="multipart/form-data" action="uploadhandler.ashx" method="post">
    <input id="uploader" name="uploadctrl" type="file"/>
</form>

Es gibt auch eine JavaScript-Methode auf der obigen Seite, die so aussieht:

function performUpload(){
    document.getElementById('frmupload').submit();
}

Ich rufe dies innerhalb einer Seite ( uploadpage.htm aus einem iframe heraus auf:

<iframe id="docframe" src="upload.htm" style="display:none"></iframe>

Ich versuche, die folgende Anweisung von der Seite uploadpage.htm auszuführen:

var i = document.getElementById('docframe');
i.contentWindow.performUpload();

Ich erhalte die Fehlermeldung Zugriff verweigert und mein Debugger stoppt bei der ersten von mir angezeigten JavaScript-Funktion. Beide Dateien befinden sich am selben Speicherort im Webprojekt. Sie haben auch den gleichen Domainnamen. Warum bekomme ich dann diesen Fehler?

Natürlich konnte ich die Seite früher posten, als ich das name -Attribut für das HTML-Upload-Steuerelement nicht festgelegt hatte. Aber nachdem ich das Namensattribut im HTML-Markup festgelegt habe, wird dieser seltsame Fehler angezeigt. Warum habe ich das nicht das erste Mal bekommen?

Schauen Sie sich diesen Beitrag an -> "Zugriff verweigert", wenn das Skript versucht, auf iframe in IE8 zuzugreifen , aber es hat nicht geholfen.

45
deostroll

IE erlaubt aus Sicherheitsgründen keine Manipulation des Eingabeelements type = "file" aus Javascript. Das Festlegen des Dateinamens oder das Aufrufen eines Klickereignisses, um das Dialogfeld des Browsers anzuzeigen, führt zu dem Fehler "Zugriff verweigert" auf dem Formular "Senden" - Internet Explorer merkt sich geschickt, welche Methoden aufgerufen wurden.

Ähnliches Problem: http://www.webdeveloper.com/forum/showthread.php?t=181272

97
Dunc

Herkömmlicherweise ist der JavaScript-Zugriff auf HTML input type="file" Aus Sicherheitsgründen stark eingeschränkt. AFAIK, Sie können mit JS auf einem Datei-Uploader-Element Folgendes nicht ausführen:

  1. Sie können den "Wert" des Elements nicht lesen, da er den Dateinamen enthält.
  2. Sie können das Dateiauswahlmenü nicht über JS aufrufen.
  3. Sie können die Datei-Uploader-Steuerung nicht über JS abschicken.

All dies ist vorhanden, um böswillige Angriffe wie das Stehlen Ihrer Dateien im Hintergrund über JS zu verhindern. Ich habe eine Weile nicht mehr mit einem input type="file" - Element gespielt, aber ich vermute, Sie werden ähnliche Probleme (wenn nicht alle) auch in anderen Browsern feststellen.

Ihre beste Wahl ist eine Flash-basierte Lösung oder vielleicht ein neues HTML5-Steuerelement.

Hier ist auch eine offizielle Referenz zum Thema:

http://msdn.Microsoft.com/en-us/library/ms535263 (v = vs.85) .aspx

Aktivieren Sie "Community Content" ganz unten auf der obigen Seite.

13
Rajat

Fügen Sie in den beiden HTML-Dateien, die sich im Frame befinden und in einer anderen, die den Frame enthält, document.domain='example.com' Hinzu, wobei 'example.com' Ihr Domainname ist.

0
Gaurav Saxena