2013-01-16 83 views
0

我在delphi應用程序中使用TWebBrowser組件,並使用JavaScript進行通信。IE6變量只適用於alert()

在JavaScript中,我有以下代碼:

function test() { 
    var nr = external.GetNumber(); 
    alert(nr); 
    nr = parseInt(nr); // this is where the javascript fails 
    doSomethingWith(nr); 
} 

警報(NR)功能顯示了我期待的號碼(如:1517376),但是當我打電話parseInt函數(或任何其他功能),它失敗「external.GetNumber();不是一個字符串」。 nr的類型是「未定義的」。

有沒有辦法將它轉換爲字符串或數字?我試過nr.toString(),String(nr),nr = nr +'',它們都失敗了,因爲「String is expected」。這隻發生在IE6上。

+1

這不可能是產生你所描述的錯誤的真實代碼。一個或另一個不像你列出的那樣。當然,另一個明顯的問題是:什麼是'external.GetNumber'? –

+1

如果你使用parseInt來定義'radix',你總是應該注意一件事。對於decimal來說'parseInt(nr,10)'。但我不認爲這與你的問題有關。 –

+0

[IE6?](http://www.ie6countdown.com/)大多數企業甚至不再支持IE7。 – epascarello

回答

0

我不認爲你在提醒真正的錯誤。嘗試:

var nr; 
try{ nr = external.GetNumber(); } catch(e) { alert(nr); } 
3

你有2個問題:

  • external.GetNumber();可能不會返回一個字符串類型

您可以通過添加一個空字符串JS解決這個問題,這隱含轉換NR到字符串類型:

var nr = ""+ external.GetNumber();

  • JS parseInt函數函數使用基數參數,Full explanation here

    nr = parseInt(nr, 10); //正確用法

令人不解我的是你爲什麼不擺在首位返回一個數字?我們只能猜測,因爲你沒有分享external.GetNumber()後面的代碼。