2010-06-27 569 views
0

我在php条件if/else语句中使用此代码来打开一个新窗口。它打开2窗口,而不是一个,但只在我的现场(在专用服务器上)而不是在测试站点(共享服务器)上打开2个窗口。Javascript window.open调用两次

编辑:从zebediah49的建议,我在新的窗口url后追加了一个随机的int变量。它用每个新窗口实例更改变量,所以我假设它意味着它运行条件两次。我应该提及它使用Joomla和第三方社区应用程序JomSocial。

好吧,当我正在编辑这个文件,在同一个窗口打开〜5分钟后,它打开了一个全新的window.open窗口实例。所以很显然,一旦它降落就会自动刷新一次。我必须撬动那个。仍然有任何建议,欢迎。

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

+1

你在第三行有一个未转义的'“'。 – 2010-06-27 18:31:33

+0

仅供参考:第3行的结尾看起来像是在最后一行之前缺少一个\。 – Asaph 2010-06-27 18:32:31

+0

意外删除了这篇文章中的转义。原始代码包含反斜杠。编辑后。 – 2010-06-27 18:37:44

回答

0

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

您的意思是

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

如果这是唯一的调用window.open()的您http://www.example.com/index.php也可能会使另一个window.open()电话

+0

这是唯一的调用,并且window.open()执行的url是唯一的。它打开两次相同的唯一网址。 不知道评论的问题,尽管我没有在这篇文章中留下//。现在修复了。 – 2010-06-27 18:42:38

+0

不,他想要XML评论。这是一件有点老旧的事情,但是如果浏览器不理解

1

,因为它的执行不同,在两者之间的代码中有不同的东西,或者在环境中有不同的东西。

测试是非常,非常,非常确信它是开放的具体URL两次,已经成为一个随机变量追加到URL的末尾:

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

另外,如果你想避免有报价的问题,我会建议使用here文档:

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

+0

这些建议很好。 $ rando随着新的窗口实例而改变。这意味着它由于某种原因两次循环条件,对吧?它不会重复以下条件,因为它会在原始页面上创建额外的html。我会在OP中发布一些额外的信息。另外,我对字符串进行了连接,因为我更熟悉它。 – 2010-06-27 20:44:21

0

可能这是PHP的回声被触发两次?