2010-06-27 62 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的回聲被觸發兩次?