javascript window.open в aspx - PullRequest
       22

javascript window.open в aspx

0 голосов
/ 19 января 2010

У меня есть страницы aspx с vb.net в спину. Мне нужно использовать JavaScript, чтобы открыть новое окно при загрузке страницы. Я также отправляю строку запроса (www.mysite.com/default.aspx?dest=register.aspx) с предыдущей страницы. Мне нужен javascript для разбора строки запроса и открытия нового окна, только если в URL есть строка запроса. пожалуйста, совет

Ответы [ 3 ]

1 голос
/ 19 января 2010

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

Чтобы открыть окно без блокировки, вызов должен происходить из явного пользовательского события (то есть «щелкнуть»).

0 голосов
/ 19 января 2010

Вы ищете строку запроса "dest" специально?

Тогда это будет делать:

if(location.href.indexOf('?dest=') >= 0)
    window.open('myurl', '', '');

Хотите ли вы использовать значение строки запроса, чтобы определить, какую страницу открыть? В этом случае вам лучше сгенерировать скрипт с помощью некоторого серверного кода:

window.open('<%=Request.QueryString("dest")%>', '', '');

Вы можете сделать это и в полностью javascript. Существуют библиотеки, которые помогут вам разобрать строки запросов, но быстрый и грязный способ будет выглядеть так:

if(location.href.indexOf('?dest=') >= 0) {
    var dest = location.href.substring(location.href.indexOf('?dest=')+6);
    window.open(dest, '', '');
}

«Быстро и грязно» - это термин, обозначающий здесь. Обратите внимание, что я ищу только ?dest, то есть URL, которые имеют "dest" как строку запроса first . Я также не проверяю, есть ли в значении амперсанд, поэтому даже требуется, чтобы "dest" было строкой запроса only . Вы можете быть настолько сложными, насколько хотите, чтобы сделать его более надежным, но, как я уже сказал, а) вы должны сгенерировать этот скрипт с серверным кодом, б) вы должны использовать существующую библиотеку синтаксического анализатора, если вы действительно не хотите идти с

0 голосов
/ 19 января 2010

Для разбора URL удобно использовать какую-то библиотеку javascript, например, прототип ;)

Код будет выглядеть примерно так:

var str = "http://www.mysite.com/default.aspx?dest=register.aspx";
var obj = str.parseQuery();

if(obj.dest) window.open(obj.dest);

Чтобы использовать прототип, все, что вам нужно сделать, это загрузить файл javascript здесь и включить его на страницу с тегом script;)

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

ClientScript.RegisterClientScriptBlock(GetType(), "load_redirect", your_js_code , false);

где вы заменяете ваш код_js реальным кодом.

...