0

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 の型は "undefined" です。

文字列または数値に変換する方法はありますか? nr.toString(), String(nr), nr = nr + '' を試しましたが、「文字列が予期されていた」ため、すべて失敗しました。これは IE6 でのみ発生します。

4

2 に答える 2

3

あなたには2つの問題があります:

  • external.GetNumber();文字列型を返さない場合があります

空の文字列を追加することでjsでこれを解決できます。これにより、nrが暗黙的に文字列型に変換されます。

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

私を困惑させているのは、そもそも数字を返さないのはなぜですか?external.GetNumber();の背後にあるコードを共有しなかったため、推測することしかできません。

于 2013-01-16T17:35:49.523 に答える
0

あなたが本当のエラーを警告しているとは思いません。試す:

var nr;
try{ nr = external.GetNumber(); } catch(e) { alert(nr); }
于 2013-01-16T15:38:31.660 に答える