2010-06-27 5 views
0

Я использую этот код в выражении php conditional if/else, чтобы открыть новое окно.Javascript window.open Calling Twice

echo("<script type=\"text/javascript\"> 
<!-- 
window.open(\"http://www.example.com/index.php?$var\"); 
//--> 
</script> 
"); 

Это открытие 2 окна вместо одного, но только на моем живом месте (на выделенном сервере), а не на испытательной площадке (общий сервер).

EDIT: Из предложения zebediah49 я добавил случайную переменную int после URL-адреса нового окна. Он изменяет переменную с каждым экземпляром нового окна, поэтому я предполагаю, что это означает, что он дважды выполняет условие. Я, вероятно, должен упомянуть, что он использует Joomla и стороннее приложение сообщества JomSocial.

Хорошо, поскольку я редактировал это и после ~ 5 минут того же самого окна было открыто, он открыл новый экземпляр окна window.open. Поэтому, очевидно, он автоматически обновляется один раз, как только он приземляется. Я должен буду это понять. Все же приветствуются любые предложения.

Благодарим вас за советы относительно языка и лучших практик.

+1

В третьей строке у вас есть бесконечный символ '' '. –

+0

FYI: конец строки 3 выглядит так, будто отсутствует \ перед последним". – Asaph

+0

Случайно удалил побег в этом посте. Исходный код включает обратную косую черту. Отредактированный пост. –

ответ

0

Прежде всего. Почему те, кто в вашем Javascript? Это комментарий XML. Вы должны использовать /* ... */ или //

вы имели в виду

//<![CDATA[ 
...code... 
//]]> 

Если это единственный вызов window.open() ваш http://www.example.com/index.php может также сделать еще один window.open() позвонить

+0

Это единственный вызов и URL-адрес, который выполняет window.open(), уникален. Он открывает один и тот же уникальный URL дважды. Не уверен в этом вопросе с комментариями, хотя я не упоминал // в этом сообщении. Исправлено это сейчас. –

+0

Нет, ему нужны комментарии XML. Это несколько старая вещь, но она замечает эту строку, если браузер не понимает теги

1

Поскольку он выполняет по-разному , в коде между ними есть что-то другое или что-то другое в среде.

Чтобы проверить очень, очень, очень уверен, что это открытие, что конкретный URL дважды, которые он добавляет случайную переменную в конец URL:

$rando = rand(); 
window.open(\"http://www.example.com/index.php?$var&r=$rando\"); 

Кроме того, если вы хотите, чтобы избежать возникли проблемы цитаты, я бы посоветовал использовать HEREDOCs:

echo(<<<EOF<script type="text/javascript"> 
<!-- 
window.open("http://www.example.com/index.php?$var"); 
//--> 
</script> 
EOF 
); 

или с переменной

$content = <<<EOF<script type="text/javascript"> 
<!-- 
window.open("http://www.example.com/index.php?$var"); 
//--> 
</script> 
EOF; 
echo($content); 

Я не могу придумать вескую причину, почему эта единственная строка JS произойдет дважды, поэтому я хотел бы видеть со случайным var, так что нет другого способа, кроме того, что он мог бы быть открыт дважды. (Если бы это было где-то еще в файле, у него не было бы & r = ..., если бы это было то же самое, что выполнялось дважды, & r = ... будет отличаться между ними)

+0

Это хорошие предложения. $ Rando меняется с обоими новыми экземплярами окна. Это должно означать, что по какой-то причине он зацикливается на условное условие, верно? Это не повторяет следующее условие, так как это создаст дополнительный html на исходной странице. Я отправлю дополнительную информацию в OP. Кроме того, я пошел с конкатенацией строк, так как я больше знаком с ним. –

0

Could это то, что эхо PHP запускается дважды?