obter access é negado erro no IE8

Eu tenho um formulário HTML ( upload.htm ) com um controle de upload de arquivo HTML dentro dele.

   

Há também um método JavaScript na página acima, que é semelhante a:

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

Eu chamo isso dentro de uma página ( uploadpage.htm ) dentro de um iframe :

  

Eu tento executar a declaração mostrada abaixo na página uploadpage.htm :

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

Recebo um erro dizendo que o access foi negado e meu depurador foi interrompido na primeira function JavaScript que mostrei. Ambos os arquivos estão no mesmo local no projeto da web. Eles têm o mesmo nome de domínio também. Por que recebo esse erro?

Claro que, anteriormente, eu poderia postar a página: quando eu não defini o atributo name para o controle de upload de HTML. Mas depois de definir o atributo name na marcação HTML, recebo esse erro estranho. Por que eu não peguei isso pela primeira vez?

Teve uma olhada neste post -> “Acesso negado” quando o script tenta acessar o iframe no IE8 , mas não ajudou.

O IE não permite a manipulação do elemento de input type = “file” do javascript devido a razões de segurança. Definir o nome do arquivo ou invocar um evento de clique para mostrar a checkbox de diálogo do navegador resultará em um erro “Acesso negado” no formulário enviado – o Internet Explorer é inteligente em lembrar quais methods foram invocados.

Problema semelhante: http://www.webdeveloper.com/forum/showthread.php?t=181272

Tradicionalmente, o access JavaScript à input type="file" HTML input type="file" é severamente limitado por questões de segurança. AFAIK, Você não pode fazer o seguinte com JS em um elemento de upload de arquivo:

  1. Você não pode ler o “valor” do elemento, pois ele contém o nome do arquivo.
  2. Você não pode acionar o menu de seleção de arquivos via JS.
  3. Você não pode enviar o envio do controle de upload de arquivo via JS.

Tudo isso está no lugar para evitar ataques maliciosos como roubar seus arquivos em segundo plano via JS. Eu não tenho jogado com um elemento input type="file" em um tempo, mas meu melhor palpite é que você vai acertar problemas semelhantes (se não todos) em outros navegadores também.

Sua melhor aposta é uma solução baseada em Flash ou talvez algum novo controle HTML5.

Além disso, aqui está uma referência oficial sobre o assunto:

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

Verifique o “Conteúdo da Comunidade” até o final da página acima.

Em ambos os arquivos HTML – aquele que está no quadro e outro que contém o quadro – tente adicionar document.domain='example.com' que ‘example.com’ é o seu nome de domínio.