Отправить переменную из одного HTML в другой - PullRequest
1 голос
/ 10 марта 2012

У меня есть 2 HTML-страницы, send.html и receive.html На каждой странице у меня есть текстовое поле. То, что я пытаюсь сделать, это всякий раз, когда «значение» текстового поля в send.html изменяется, автоматически анализирует данные в значение текстового поля receive.html. Когда я говорю автоматически, я имею в виду без необходимости кнопки или перезагрузки страниц.

Подводя итог .. У меня есть этот текст в send.html

<input type="text" id="send" size="25" value="Val1">

И это текстовое поле в receive.html

<input type="text" id="receive" size="25" value="Val2">

Я хочу как-то "контролировать" Val1, и если он меняется, я хочу Val2 = Val1

Для своих целей я не могу использовать jquery. Это возможно?

Ответы [ 3 ]

1 голос
/ 10 марта 2012

Я думаю, вам не хватает большой картинки . Отправка и получение данных требуют некоторого взаимодействия на стороне сервера, например, с использованием PHP, ASP, JSP, Python и т. Д., Если вы не согласны с cookies.

Когда вы обновляете поле в одном возрасте, эти данные должны каким-то образом отправляться на сервер, чтобы поймать другую страницу. В любом случае, способ, которым вы хотите, чтобы он стал автоматическим, сейчас невозможен. Тем не менее, я предоставлю решение, как вы можете сделать это, используя jQuery и PHP. Но если хочешь?


Обновление

Так что, кажется, куки - это единственный вариант. Выполните следующие шаги

Создайте новый файл cookie.js и поместите следующий код внутри

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
  {
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

Затем создайте два html-файла "test1.html" и "test2.html" с этой разметкой

<html>
<head>
    <script src="cookie.js"></script>
</head>
<body>
    <input type="text" id="text1" name="text1" />
</body>
</html>

Теперь на test1.html добавьте следующий скрипт в заголовок

<script>
    window.onload = function() {
        document.getElementById("text1").onchange = function() {
                                                  // ^ use onkeyup if you want this to occur as you type
            setCookie("shared", this.value, 1);
            alert('oK, val changed so lets check it');              
        };
    };
</script>

На Test2.html добавить следующий заголовок на голову

<script>
    var checkandupdate = function() {
           var shared = getCookie("shared");
           if(shared) {

              document.getElementById("text1").value = shared;
           }
    };

    window.onload = function() {
        int = setInterval("checkandupdate()",1000);
    };

</script>

Теперь

  • Открыть обе страницы
  • Перейдите в test1.html и введите что-нибудь, затем нажмите tab, чтобы получить сообщение с предупреждением.
  • Откройте test2.html, его нужно обновить в течение 1 секунды
  • После того, как демонстрационная программа сработает, обновите имена полей по мере необходимости

Наслаждайся;)

0 голосов
/ 26 марта 2013

, если вы хотите использовать без куки для улучшения производительности .. вы можете использовать эту библиотеку , для переноса значений она использует window.name .. однако она не будет работать, если пользователь откроет новую вкладку.. все еще хорошо .. единственное, что вы должны обработать новую ситуацию с табуляцией ..

Надеюсь, что это поможет .. особенно это поможет, если это основанный на html интерфейс ..

0 голосов
/ 10 марта 2012

На вашей второй HTML-странице, скажем, мы называем ее page-2.html?send=xyz, когда значение изменяется, вы добавляете следующий код JS:

function getQueryString() {
  var result = {}, queryString = location.search.substring(1),
      re = /([^&=]+)=([^&]*)/g, m;

  while (m = re.exec(queryString)) {
    result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
  }

  return result;
}

var sendValue= getQueryString()["send"];
document.getElementById("receive").value=sendValue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...