Javascript IE6变量仅在alert()中有效

Javascript IE6变量仅在alert()中有效,javascript,delphi,internet-explorer-6,Javascript,Delphi,Internet Explorer 6,我在delphi应用程序中使用TWebBrowser组件,并使用JavaScript进行通信 在JavaScript中,我有以下代码: function test() { var nr = external.GetNumber(); alert(nr); nr = parseInt(nr); // this is where the javascript fails doSomethingWith(nr); } alert(nr)函数显示我期望的数字(例如:1517376),但

我在delphi应用程序中使用TWebBrowser组件,并使用JavaScript进行通信

在JavaScript中,我有以下代码:

function test() {
  var nr = external.GetNumber();
  alert(nr);
  nr = parseInt(nr); // this is where the javascript fails
  doSomethingWith(nr);
}
alert(nr)函数显示我期望的数字(例如:1517376),但当我调用parseInt(或任何其他函数)时,它失败,并显示“external.GetNumber();不是字符串”。nr的类型为“未定义”


有没有办法把它转换成字符串或数字?我尝试了nr.toString(),String(nr),nr=nr+'',但都失败了,因为“应该是String”。这只发生在IE6上。

我认为您没有注意到真正的错误。尝试:

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

我认为你没有意识到真正的错误。尝试:

var nr;
try{ nr = external.GetNumber(); } catch(e) { alert(nr); }
您有两个问题:

  • external.GetNumber()不能返回字符串类型
您可以在js中通过添加空字符串来解决此问题,这会隐式地将nr转换为字符串类型:

var nr=”“+external.GetNumber()

  • js parseInt函数使用一个基数参数:

    nr=parseInt(nr,10)//正确用法

让我困惑的是,你为什么不首先返回一个数字?我们只能猜测,因为您没有在external.GetNumber()后面共享代码

您有两个问题:

  • external.GetNumber()不能返回字符串类型
您可以在js中通过添加空字符串来解决此问题,这会隐式地将nr转换为字符串类型:

var nr=”“+external.GetNumber()

  • js parseInt函数使用一个基数参数:

    nr=parseInt(nr,10)//正确用法


让我困惑的是,你为什么不首先返回一个数字?我们只能猜测,因为您没有在external.GetNumber()后面共享代码

这不可能是生成您描述的错误的真实代码。其中一个与您列出的不完全相同。当然,另一个明显的问题是:什么是
external.GetNumber
?如果使用
parseInt
,您应该始终注意的一件事是定义
基数。对于十进制do
parseInt(nr,10)
。但我认为这与你的问题无关。大多数企业甚至不再支持IE7了,这才是产生错误的真正代码。external.GetNumber是Delphi(父应用程序)中的一个函数,可从Javascript“调用”。向我们展示您的Delphi
external.GetNumber
。它可能将错误的OleVariant类型返回到
nr
。这不可能是生成您描述的错误的真实代码。其中一个与您列出的不完全相同。当然,另一个明显的问题是:什么是
external.GetNumber
?如果使用
parseInt
,您应该始终注意的一件事是定义
基数。对于十进制do
parseInt(nr,10)
。但我认为这与你的问题无关。大多数企业甚至不再支持IE7了,这才是产生错误的真正代码。external.GetNumber是Delphi(父应用程序)中的一个函数,可从Javascript“调用”。向我们展示您的Delphi
external.GetNumber
。它可能将错误的OleVariant类型返回到
nr