Javascript window.open调用两次

时间:2010-06-27 18:27:04

标签: php javascript

我在php条件if / else语句中使用此代码打开一个新窗口。

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

它打开2个窗口而不是一个,但只在我的实时站点(在专用服务器上)而不是在测试站点(共享服务器)上。

编辑:从zebediah49的建议,我在新窗口网址后附加了一个随机的int变量。它改变了每个新窗口实例的变量,所以我认为这意味着它运行条件两次。我可能应该提到它正在使用Joomla和第三方社区应用程序JomSocial。

好吧,正如我正在编辑这个并且在打开同一个窗口约5分钟后,它打开了一个全新的window.open窗口实例。所以很明显它一落地就会自动刷新一次。我不得不撬开它。仍然欢迎任何建议。

感谢您提供有关语言和最佳做法的提示。

3 个答案:

答案 0 :(得分:1)

由于它的表现不同,因此在两者之间的代码中存在不同的东西,或者在环境中存在不同的东西。

要测试是非常,非常,非常确定它打开特定网址两次,让它在网址末尾附加一个随机变量:

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

此外,如果您想避免引用问题,我建议您使用HEREDOC:

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会发生两次的好理由,这就是为什么我想看看随机变量,这样除了可以打开它之外别无他法两次。 (如果它在文件的其他地方,则不会有&amp; r = ...;如果执行两次是同样的事情,&amp; r = ...将在两者之间有所不同)

答案 1 :(得分:0)

首先。 为什么那些在你的Javascript? 那些是XML评论。 您需要使用/* ... *///

你的意思是

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

如果这是对window.open()的唯一调用,那么您的http://www.example.com/index.php也可能会进行另一次window.open()来电

答案 2 :(得分:0)

可能是PHP回声被触发了两次吗?