0

私の Flex ページには、別の Web ページに移動するリンクがあり、その子 Web ページのサイズを制御したいと考えています。サイズ変更のために、ActionScript 内で JavaScript コマンドを使用しています。ActionScript コードは次のとおりです。

private function openLinkEvent():void{
    var baseUrl:String ="https://localhost:8080/someWebsite?customerName="customer.custName;

    var jscommand:String ="window.open(baseUrl,'win','height=280,width=500,toolbar=no,scrollbars=no,resizable=no');";       
    var url:URLRequest = new URLRequest("javascript:" + jscommand + " void(0);"); 
    navigateToURL(url, "_self");
}

このコードには 2 つの問題があります。

  1. 上記の方法で行うと、新しいウィンドウが開かず、Flex ページに「baseUrl is undefined」というエラーが表示されます。window.open メソッドで URL を直接渡すのではなく、URL の変数を渡すことができないのはなぜですか?

  2. window.open で baseURL("https://localhost:8080/someWebsite?customerName="customer.custName;) の値を直接渡すと、customerName の値が customer.custName として取得されますが、実際の値を取得する必要があります。セッションで保存された顧客の価値。

明確にするために、次の方法で baseUrl を渡すと、アプリケーションは完全に正常に動作します。

navigateToURL(new URLRequest(baseUrl)) 

しかし、ブラウザ ウィンドウのサイズを変更したい場合、上記のコマンドでは不十分です。そのため、ActionScript と統合された JS コマンドを使用しています。

4

1 に答える 1

3

上記の方法で行うと、新しいウィンドウが開かず、フレックスページに「baseUrl is undefined」というエラーが表示されます。window.open メソッドで URL を直接渡すのではなく、URL の変数を渡すことができないのはなぜですか?

さて、変数 baseUrl が定義されていますが、jsCommand の作成時には使用していません。baseUrl というタイトルの文字列を使用しています。変数ではありません。

これはあなたが持っているものです:

var jscommand:String ="window.open(baseUrl,'win','height=280,width=500,toolbar=no,scrollbars=no,resizable=no');";       

これはおそらくあなたが望むものです:

var jscommand:String ="window.open('" + baseUrl + "','win','height=280,width=500,toolbar=no,scrollbars=no,resizable=no');";       

文字列連結を使用して、jscommand 文字列を作成します。jscommand の結果の値は次のようになります。

window.open('https://localhost:8080/someWebsite?customerName=something','win','height=280,width=500,toolbar=no,scrollbars=no,resizable=no');

これの代わりに:

window.open(baseUrl,'win','height=280,width=500,toolbar=no,scrollbars=no,resizable=no');

うまくいけば、それは理にかなっています。

window.open で baseURL("https://localhost:8080/someWebsite?customerName="customer.custName;) の値を直接渡すと、customerName の値が customer.custName として取得されますが、実際の値を取得する必要があります。セッションで保存された顧客の価値。

baseURL を作成するときに連結演算子がないのは奇妙です。customer.custName+ を文字列と:の間に追加します。

var baseUrl:String ="https://localhost:8080/someWebsite?customerName=" + customer.custName;

行がコンパイル時エラーを出していなかったことに驚いています。ただし、customer がどのタイプのクラスであるか、また custName が何を意味するかについて詳しく説明していないため、ここで何が起こっているのかを明確にすることは困難です。customer は作成したカスタム クラスのインスタンスであり、custName はその文字列プロパティであると想定しています。

于 2012-06-02T14:22:44.143 に答える