Передавать переменные по ссылке и использовать их на новой странице (JavaScript)? - PullRequest
0 голосов
/ 06 января 2012

Я знаю только несколько основных вещей в JavaScript, поэтому мне нужна помощь с этим ...

Что я хочу сделать, это: иметь ссылку, чтобы открыть новое окно, и в этом окне использовать 2 переменныепередано для редактирования некоторого контента.Измените некоторый текст на первую переменную и измените ссылку в этом новом окне на значение второй переменной.

Возможно ли это?Я не ищу точный код, просто любые ресурсы, на которые я могу посмотреть, были бы хороши.

Спасибо.

Ответы [ 6 ]

1 голос
/ 06 января 2012

Чтобы открыть окно:

var myObject = new Object();
myObject.param1 = 'A';
myObject.param2 = 'B';
var windowPopup;
if(window.showModelessDialog){
    windowPopup = window.showModelessDialog(path, myObject, '');
} else {
    windowPopup = window.open(path, '_blank', '');
    windowPopup.myObject = myObject;
}

Чтобы прочитать содержимое в новом окне:

var myObject = window.myObject; 
if(!myObject){
    if(window.dialogArguments){
        myObject = window.dialogArguments;
    }
}
alert(myObject.param1);

Это кросс-браузерное решение, работающее для IE9.

Также возможно передать обратный вызов для второго окна. Пример:

var myObject = new Object();
myObject.param1 = 'A';
myObject.param2 = 'B';
myObject.callback = function(param) {document.forms[0].field.value = param;}

Когда вы получите ссылку myObject в новом окне, выполните:

 myObject.callback('value from the new window'); 

Значение будет изменено в исходном окне.

1 голос
/ 06 января 2012

Хотя это технически возможно, но на самом деле это не подходит для Интернета и ведет к слабым сторонам безопасности и поведению, которых пользователи не ожидают, и которые могут блокировать браузеры. Думайте о каждом окне браузера как о независимом приложении. Вам было бы лучше использовать динамически созданный div (или аналогичный) в той же странице / окне.

Возможно, вы могли бы объяснить больше, почему вы думаете, что вам это нужно.

1 голос
/ 06 января 2012

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

0 голосов
/ 06 января 2012

Я не уверен, что точно понял, что вы имеете в виду, но вот скрипт, который позволяет вам редактировать содержимое нового окна при наборе в старом: http://jsfiddle.net/Jpt3C/3/

JS

var newWindow;
$('#foo').click(function () {
    newWindow = window.open();
});
$('#bar').keydown(function () {
    if (newWindow) {
        newWindow.document.body.innerHTML = this.value;
    }
});

HTML

<a href="#" id="foo">Click me</a>
<input type="text" id="bar" />
0 голосов
/ 06 января 2012

Да, это возможно, открыв дочернее окно с помощью:

var popup = open(URL, 'Title', 'width=1000,height=420,scrollbars');

И затем вы можете получить доступ к переменным в родительском окне из открытого с помощью:

parent.var = 'some value';

Надеюсь, что это точнотебе нужно.

0 голосов
/ 06 января 2012

Возможно, это будет полезно: http://papermashup.com/read-url-get-variables-withjavascript/ Я думаю, что то, что вы пытаетесь сделать, лучше сделать с помощью языка сценариев на стороне сервера, такого как PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...