我在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窗口实例。所以很明显它一落地就会自动刷新一次。我不得不撬开它。仍然欢迎任何建议。
感谢您提供有关语言和最佳做法的提示。
答案 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回声被触发了两次吗?