Dziwne zachowanie atrybutu iframe `name` ustawionego przez jQuery w IE

Robię przesyłanie plików w stylu ajax, wysyłając plik w formie do iframe i zauważyłem dziwne zachowanie w IE (wydaje się, że dzieje się zarówno w 6, jak i 8). Zasadniczo w IE formularz nietarget iframe poprawnie, więc odpowiedź pojawia się w nowym oknie (zamiast w iframe). Możesz odtworzyć problem za pomocą następującego minimalnego zestawu HTML / JS:

<html>
<head>
  <script src="http://code.jquery.com/jquery-1.3.2.js"></script>
  <script>
    $(document).ready(function(){
      var frameName = "myFrame";
      var $iframe = $("<iframe src=\"about:blank\" />")
              .attr("name", frameName)
              .appendTo("body");
      var $uploadForm = $("<form action=\"http://www.google.com/search\" />")
              .attr("target", frameName)
              .append("<input type=\"text\" name=\"q\" />")
              .append("<input type=\"submit\" />")
              .appendTo("body");
    });
  </script>
</head>
<body>
</body>
</html>

Teraz (zanim napiszesz odpowiedź), przeprowadziłem pewne dochodzenie (używając narzędzi programistycznych IE8) i wygląda na to, że.attr("name", frameName) faktycznie dodaje atrybut jakosubmitName="myFrame" zamiast po prostuname="myFrame". Na tej podstawie rozwiązałem problem, zmieniając kod tworzenia iframe na nieco gorszy:

var $iframe = $("<iframe src=\"about:blank\" name=\"" + frameName + "\" />")
        .appendTo("body");

Dokonanie tej zmiany powoduje, że formularz jest wysyłany do ramki iframe zgodnie z potrzebami.

Moje pytania są:

Dlaczego nie.attr("name", ...) działa zgodnie z oczekiwaniami?Czy jest to błąd w jQuery, błąd w IE (na pewno nie!?!), Czy też brakuje mi czegoś oczywistego?Gdzie jestsubmitName atrybut pochodzi i jaki jest jego cel?

questionAnswers(4)

yourAnswerToTheQuestion