在我的Flex页面中,我有一个导航到不同网页的链接,我想控制该子网页的大小。为了调整大小,我在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个问题:
如果我以上述方式执行此操作,则新窗口无法打开,Flex页面显示错误“baseUrl is undefined”。为什么我无法为我的网址传递变量而不是直接在window.open方法中传递网址?
如果我直接在window.open中传递了我的baseURL(“https:// localhost:8080 / someWebsite?customerName =”customer.custName;)的值,则将customerName的值作为customer.custName虽然它应该取得会话中保存的客户的实际价值。
只是澄清一下,当我按照以下方式传递baseUrl时,我的应用程序工作正常。
navigateToURL(new URLRequest(baseUrl))
但是,如果我想重新调整浏览器窗口的大小,则上面的命令是不够的。这就是我使用与ActionScript集成的JS命令的原因。
答案 0 :(得分:3)
如果我以上述方式进行,新窗口不会打开 flex页面显示错误“baseUrl is undefined”。为什么我不能 为我的网址传递变量而不是直接传递网址 window.open方法?
嗯,baseUrl定义了变量,但是在创建jsCommand时没有使用。您正在使用名为baseUrl的字符串;不是varibale。
这就是你所拥有的:
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');
希望这是有道理的。
如果我直接传递了我的价值 基本URL( “HTTPS://本地主机:8080 / someWebsite客户名称=?” customer.custName) 在window.open中,它将customerName的值视为 customer.custName虽然它应该取客户的实际价值 保存在会话中。
好吧,在创建baseURL时,你错过了连接运算符,这很奇怪。在字符串和customer.custName
之间添加+:
var baseUrl:String ="https://localhost:8080/someWebsite?customerName=" + customer.custName;
我很惊讶该行没有给出编译时错误。但是,由于您尚未详细说明客户的类型,以及custName的含义,因此很难确定这里发生的事情。我假设customer是您构建的自定义类的实例,而custName是其上的字符串属性。