"SCRIPT5 Zugriff verweigert" Fehler auf IE9 beim Schießen .klicken Sie auf() von onchange
Wollen wir reduzieren die Anzahl der Schritte es braucht, damit ein Benutzer eine Datei hochladen, auf unserer website; wir sind also mithilfe von jQuery zu öffnen und postback-Dateien mit dem unten markup-Symbole (vereinfacht):
<a onclick="$('#uplRegistrationImage').click();">
Change profile picture
</a>
<!-- Hidden to keep the UI clean -->
<asp:FileUpload ID="uplRegistrationImage"
runat="server"
ClientIDMode="static"
Style="display:none"
onchange="$('#btnSubmitImage').click();" />
<asp:Button runat="server"
ID="btnSubmitImage"
ClientIDMode="static"
Style="display:none"
OnClick="btnSubmitImage_OnClick"
UseSubmitBehavior="False" />
Dieser Werke absolut in Ordnung, in Firefox und Chrome; die Datei öffnen-dialog, wenn der link angeklickt wird und die Entlassung der Postbacks, wenn eine Datei ausgewählt ist.
Jedoch im IE9 nach dem hochladen der Datei geladen hat, und ein Benutzer hat eine Datei ausgewählt; insteaed das OnChange funktioniert, erhalte ich einen "SCRIPT5 Zugriff verweigert" - Fehler. Ich habe versucht, die Einstellung einer beliebigen timeout-Einstellung Abständen zu überprüfen, ob eine Datei gegeben, ohne Erfolg.
Gibt es eine Reihe von anderen Fragen im Zusammenhang mit dieser; aber keiner scheint zu haben, eine anständige Antwort (Man sagte den Datei-dialog, um transparent zu sein und zu schweben, hinter einer Taste!)
Hat sonst noch jemand dieses Problem gelöst? Oder ist es absolut notwendig, dass ich ein button für IE Nutzer?
- Warum bist du nicht einfach senden Sie die onclick auf Ihrer <a>, um die gleiche Funktion wie die onclick von $('#uplRegistrationImage')?
- Die <a> " onclick öffnet sich der Datei-dialog; die <asp:FileUpload - > sollte auslösen eines Postbacks, wenn eine Datei ausgewählt ist.
- Ich hatte die gleichen Probleme in Safari, so dass ich denke IE9 hat die gleiche Haltung, klicken Sie auf() eigentlich erfordert, dass ein Benutzer auf, die aus Sicht der Sicherheit, kann man wohl verstehen.
- Fanden Sie keinen Weg drumherum oder hast du am Ende nur die eine Taste?
- Ich landete ändern die Anwendung Struktur zu abstrahieren, die relevanten Teile heraus. Ich war nur eine Verknüpfung, ich war nicht gebunden an code hinter/post zurück applikationsstruktur. Es ist ein Weg, den Zugang zu code-behind-Methoden direkt von jquery, obwohl die möglicherweise eine Hilfe für Sie. Ich würde vorschlagen, mit jQuery auf link direkt in Ihren code. Man kann darüber Lesen, dass bei encosia.com/...
- Ich fand gerade dieses: forums.asp.net/t/1573660.aspx/1, die aussieht wie Sie nur Notwendigkeit der Nutzung eines asp:Button anstelle der <a> - tag und Sie sollten ein workaround.
- habe gerade versucht es auf IE9 ohne Erfolg; die postback ist immer noch blockiert werden, durch den gleichen Fehler. Jubel für den Artikel, obwohl
- Sind Sie sicher, dass
$('#btnSubmitImage').click();
ist dies die Ursache? - Könnte es sein, weil ich bin öffnen des Upload-dialogs von javascript mit
$('#uplRegistrationImage').click();
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus Gründen der Sicherheit, was Sie zu tun versuchen, ist nicht möglich. Es scheint der IE9 wird nicht lassen Sie ein Formular Absenden auf diese Weise, es sei denn, es war eine wirkliche Maus klicken Sie auf die Datei-Upload-Steuerelement, das es auslöst.
Für Argumente Willen, ich war in der Lage zu verwenden Ihren code zu tun, den reichen in die
change
handler, aber es funktionierte nur wenn ich klickte dieBrowse
Taste mich. Ich selbst polling im$(document).ready
Methode für eine variable festgelegt, die von denchange
handler, der angibt, eine Vorlage ausgelöst werden soll - das hat nicht funktioniert entweder.Lösungen für dieses problem zu sein scheinen:
Styling ein Datei-Upload:
http://www.quirksmode.org/dom/inputfile.html
http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom
Referenzen:
jQuery : simuliert einen Klick auf ein <input type="file" /> funktioniert nicht in Firefox?
IE9-Datei input-Triggerung mit Javascript
immer Zugriff verweigert Fehler auf IE8
Hey diese Lösung funktioniert.
für den download sollten wir mit MSBLOB
Diese Lösung sieht aus wie es funktionieren könnte. Müssen Sie wickeln Sie es in ein
<form>
und bekommen es zu post in der jquery-change-handler, und wahrscheinlich Griff er in form_load mit den __eventtarget-oder iframe oder was auch immer es ist, dass web-Formulare verwendet, aber es ermöglicht es Ihnen, eine Datei auszuwählen, und mit dem Absenden des Formulars, soll es senden. Ich kann es nicht testen, da ich jedoch nicht haben, ein Umfeld zu Hause eingerichtet.http://jsfiddle.net/axpLc/1/
Gut, wie SLC erklärt, Sie sollten nutzen die
<Form>
tag.Zunächst sollten Sie angeben, die Anzahl der Dateien; das sollte bestimmt werden, indem die Eingabefelder. Der zweite Schritt wird sein, stapeln Sie Sie in ein array.
Dann erstellen Sie eine loop; Endlosschleife (Loop) wiedergegeben wird automatisch bestimmt werden, basierend auf dem input Feld ist es derzeit auf.
Dann werden Sie feststellen, dass jede Datei gewählt; ersetzt die input-Namen, um die Datei-Namen. Das sollte ein sehr, sehr grundlegende Art und Weise zu unterbreiten mehrere Dateien per jQuery.
Wenn Sie möchten, ein einzelnes Element:
Sollte erstellen Sie ein Div, wo die maximale Datei gefunden; und wird an der
onEvent
. Die Korrelation code oben müssten diese auch:Dies sollte das navigieren im DOM übergeordneten Struktur; erstellen Sie dann die Felder bzw.. Das ist der eine Weg; der andere Weg, den Sie oben sehen, mit SLC. Es gibt durchaus ein paar Möglichkeiten, es zu tun; es ist nur, wie viel von jQuery willst du manipulieren?
Hoffentlich das hilft; sorry, falls ich deine Frage missverstanden.