web-dev-qa-db-fra.com

Comment passer d'une valeur d'une fenêtre parente à une autre page HTML en utilisant javascript?

J'ai 2 fenêtres home.html et result.html.

Dans home.html j'ai un <textarea> #txtinput et un <button> #btn .

Dans result.html j'ai un autre <textarea> #txtresult .

Sur home.html, si je saisis une valeur dans #txtinput et que je clique sur #btn , je veux ouvrir result.html et transmettre la valeur de #txtinput dans #txtresult .

J'ai essayé le code ci-dessous d'un autre article, qui affiche la valeur dans le corps de la nouvelle fenêtre mais ne l'affiche pas dans mon élément

var myWindow = window.open();
myWindow.document.body.innerHTML = document.getElementById("txtinput").value;

Est-ce possible d'une manière simple? Je suis relativement nouveau en JavaScript, mes cours sont en cours et je suis simplement curieux de savoir comment le faire. Toute aide détaillée sera très appréciée!

9
locknies

J'espère avoir besoin d'élaborer le code ci-dessous

Bouton sur la fonction de clic dans la page d'accueil:

function sample(){
    //this will set the text box id to var id;
    var id = document.getElementById("text_box_id").id;

    //the sessionStorage.setItem(); is the predefined function in javascript
    //which will support for every browser that will store the sessions.
    sessionStorage.setItem("sent", id); 

    //this is to open a window in new tab
    window.open("result.html","_blank");
}

Récupérer la valeur dans la page de résultat:

$(document).ready(function(){
    //This sessionStorage.getItem(); is also a predefined function in javascript
    //will retrieve session and get the value;
    var a = sessionStorage.getItem("sent");
    alert(a);
});     

Pour plus d'informations sur sessionStorage

J'ai fait la même chose que ci-dessus, j'obtiens des valeurs dans une nouvelle fenêtre, c'est génial, mais je n'obtiens que des valeurs dans la fonction documet.ready (). Je ne peux donc pas utiliser ces valeurs dans mon JSP. une fois que j'ai eu les valeurs, j'ai besoin de les afficher dans JSP.

15
vivek

J'espère que ce code vous aidera

Cela devrait être dans la page d'accueil:

function sample(id) {
    sessionStorage.setItem("sent", id);
    window.open("result.html","_blank");
}

Ceci est une autre manière dans la même fonction de page d'accueil:

function sample() {
    var id=document.getElementById("your_required_id").id;
    sessionStorage.setItem("sent", id);
    window.open("result.html","_blank");
}

Cela devrait être dans la page de résultats:

function sample1() {
    var a=sessionStorage.getItem("sent");
    alert(a);
}

L'identifiant peut être votre identifiant de zone de texte 

2
vivek

Dans result.html, recherchez la fenêtre Window qui l’a ouverte à l’aide de window.opener , puis prenez vos données qui vous intéressent à partir de Window .

window.addEventListener('load', function () { // wait for ready
    var home = window.opener, txtinput, txtresult;
    if (home) {
         txtinput = home.document.getElementById("txtinput");
         txtresult = document.getElementById('txtresult');
         txtresult.value = txtinput.value;
    }
}, false);

Dans home.html, écoutez un clic sur #btn et ouvrez result.html

// assuming button exists at invocation time
var btn = document.getElementById('btn');
btn.addEventListener('click', function () {
    window.open('result.html');
}, false);
1
Paul S.

je pense qu’il vous faut une simple affectation, à l’aide de la poignée window.opener de la fenêtre enfant:

if (window.opener) document.getElementById("#txtresult").value = window.opener.document.getElementById("#txtinput").value;
0
shayuna