Autor Zpráva
Darker
Profil
Dynamicky vytvářím formulář, který by se měl odeslat do IFRAME. Bohužel se pokaždé otevře nová záložka.
    var inform = document.createElement("form");
    inform.appendChild(makeInput("cm","download "+arg));
    inform.appendChild(makeInput("path",path));
    inform.target = "pepa";
    inform.method="post";
    inform.style.display="none";
    var pepa = document.createElement("iframe");
    pepa.className="hidden";
    pepa.name="pepa";
    document.body.appendChild(pepa);
    document.body.appendChild(inform);
    inform.submit();
    function makeInput(name,value) {
       var n=document.createElement("input");
       n.name=name;
       n.value=value;
       return n;    
    }
peta
Profil
<html>
<body>
aaa

<script>var arg = ''; var path = ''; // pridano
  var inform = document.createElement("form");
    inform.appendChild(makeInput("cm","download "+arg));
    inform.appendChild(makeInput("path",path));
    inform.target = "pepa";
    inform.method="post";
    inform.style.display="none";
    var pepa = document.createElement("iframe");
    pepa.className="hidden";
    pepa.name="pepa";
    document.body.appendChild(pepa);
    document.body.appendChild(inform);
    inform.submit();
    function makeInput(name,value) {
       var n=document.createElement("input");
       n.name=name;
       n.value=value;
       return n;    
    }
</script>

bbb
</body>
</html>

FF chybova konzola:
Chyba: ReferenceError: arg is not defined, Řádek: 7
Chyba: ReferenceError: path is not defined, Řádek: 8
Po oprave se to cele zacykli. zadna nova zalozka se mi neotevre.
Darker
Profil
Arg i path byly proměnné výše ve skriptu, konzole žádné chyby neházela. Problém jsem vyřešil tím, že formulář vkládám přímo do HTML stránky v IFRAME a odesílám ho v IFRAME:
function Cmd() {
  /**...**/
  var path = "xx";
  /**...**/
  var commands = {};
  /**...**/
  commands.download = function(arg) {
    var inform = document.createElement("form");
    inform.appendChild(makeInput("cm","download "+arg));
    inform.appendChild(makeInput("path",path));
    inform.action="index.php";
    inform.method="post";
    inform.style.display="none";
    var pepa = document.createElement("iframe");
    pepa.className="hidden";
    pepa.src="about:blank";
    pepa.onload = function() {document.body.removeChild(pepa);};
    document.body.appendChild(pepa);
    
    window.frames[0].document.body.innerHTML="";
    window.frames[0].document.body.appendChild(inform);
    inform.submit();
    function makeInput(name,value) {
       var n=document.createElement("input");
       n.name=name;
       n.value=value;
       return n;    
    }
  }
}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: