Javascript - доступ к элементам с неоткрытой страницы - PullRequest
2 голосов
/ 24 сентября 2011

Мой вопрос несколько сложно объяснить. То, что я пытаюсь сделать, у меня есть кнопка на определенной странице. Когда я нажимаю эту кнопку, я должен иметь доступ к элементам формы, расположенной на другой странице ( без открытия другой страницы ).

Нажатие на эту кнопку отредактирует некоторые элементы формы с этой «неоткрытой» страницы, а затем опубликует ее, и все это без открытия какого-либо дополнительного всплывающего окна / вкладки / окна. После публикации формы кнопка исчезнет.

Форма, о которой идет речь, содержит уникальные параметры, которые нельзя получить без доступа к конкретной странице, поэтому я не могу эмулировать форму в автономном режиме.

Некоторые из моих предположений - использовать динамический iframe, установленный на «display: none», или Ajax, но в остальном я не совсем уверен, возможно ли это и как это сделать.

У кого-нибудь есть идеи? (извините, если вопрос не очень ясен, я изо всех сил старался описать проблему)

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Я сделал это так, используя jQuery:

  1. Получить HTML-код со страницы формы, используя $ .get ()
  2. Извлечение узла формы из строки HTML
  3. Создать скрытый фрейм
  4. Разбор HTML формы внутри нового iframe
  5. Изменить значения формы;
  6. "URLEncode" данных формы с использованием jseu's .serialize ();
  7. Отправьте сериализованные данные в цель, используя $ .post (), с функция обратного вызова, получающая ответ
  8. Если ответ указывает на успех, спрячьте кнопку и удалите скрытые IFrame

Я решил извлечь форму из строки HTML, возвращенной $ .get (), так как для ее анализа не потребуется загружать всю страницу формы перед использованием фактической формы в качестве объекта. Использование скрытого iframe для разбора, вероятно, не самый «профессиональный» способ, но он работает.

0 голосов
/ 29 сентября 2011

Попробуйте использовать frameset. приведенный ниже пример кода, который имеет 3 страницы 1. страница 1 является родительским документом, который содержит два фрейма. 2. кадр1 относится к странице2 3.frame2 относится к странице3

test1.htm

  <html>
<head>
<title>test</title>
<frameset rows="25px,*" frameborder="0" framespacing="0" >
<frame name="Frame2" id="Frame2" src="test2.htm"/>
<frame name="Frame1" id="Frame1" src="test3.htm"/>
</frameset>
</head>
</html>

Test2.htm

   <html>
<script>
var global="testing"

</script>

</html>

test3.htm

<html>
<script>
alert(parent.window.frames[0].global);
parent.window.frames[0].global="local"

function test()
{
alert(parent.window.frames[0].global);
}

</script>

<body>
  <input type="button" onclick="test()" />

</body>
</html>

На странице test2 значение global можно изменить со страницы test3.htm.

...