2010-10-18 43 views
0

正確的URL,我有一個簡單的小形式在IE7打開新窗口中打開同一個目標的基礎窗口,但顯示了Firefox

<form id="loginform"> <input id="myinput" type="text" /> <input name="submit" value="go" type="submit" /></form> 
在一個很不安全的方式

我希望它去根據不同的URL輸入值。

這裏是我簡單的小jQuery腳本,我肯定可以寫得更簡潔。 (隨時幫助)

$(document).ready(function() { 
jQuery.noConflict(); 
var apple = 'http://www.apple.com'; 
var microsoft = 'http://www.microsoft.com'; 

    jQuery('#loginform').submit(function() { 
    var pass = jQuery('#myinput').val(); 

if (pass=='apple') { 
var currentloc=apple; 
} else if (pass=='microsoft') { 
var currentloc=microsoft; 
} 
else { 
var currentloc ='http://www.mysite.com/sorry'; 
} 
     window.open(currentloc, 'formpopup', 'width=800,height=600,resizeable=1,scrollbars=1'); 
    }); 
}); 

這作品時,我對ffcurrent Macintosh上運行它,而不是當我在IE7中運行它。那麼彈出窗口與我們來自的窗口相同。

回答

1

我認爲主要的問題是你宣佈currentloc作爲一個局部變量三次。

在JavaScript它的全部範圍,並在每次宣佈currentloc用關鍵字時間var你基本上說,「我希望此變量在此,如果(或者如果)語句,不存在外面。 「稍後當您使用window.open並且您通過currentloc時,您實際上正在實例化一個新的全局變量,因爲currentloc的所有其他實例都已丟失。當你不用var聲明它們時,會自動創建全局變量(我認爲它們是全局對象的全局屬性,但我並不是100%)。無論如何,將顯式聲明變量並將其限制爲應用程序所需的最小範圍被認爲是最佳實踐。

這是您的修改代碼。我希望它的工作原理(測試IE8怪癖模式,和Firefox)

<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" ></script> 
    <script> 
    $(document).ready(function() { 
     jQuery.noConflict(); 
     var apple = 'http://www.apple.com'; 
     var microsoft = 'http://www.microsoft.com'; 
     var currentloc; 

     jQuery('#loginform').submit(function() 
     { 
      var pass = jQuery('#myinput').val(); 

      if (pass=='apple') 
      { 
       currentloc=apple; 
      } 
      else if (pass=='microsoft') 
      { 
       currentloc=microsoft; 
      } 
      else 
      { 
       currentloc ='http://www.mysite.com/sorry'; 
      } 
      window.open(currentloc, 'formpopup', 'width=800,height=600,resizeable=1,scrollbars=1'); 
     }); 
    }); 
    </script> 
</head> 
<body> 
    <form id="loginform"> 
     <input id="myinput" type="text" /> 
     <input name="submit" value="go" type="submit" /> 
    </form> 
</body> 
</html> 
+0

感謝詳盡的解釋,我總是得到一點與全球本地的東西失去了... – liz 2010-10-20 14:48:39