我正在维护一个传统的Flash应用,它一度调用ActionScript 2.0的函数getURL()(参见https://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000564.html)
我们现有的代码似乎可以正常工作一次,传递URL和“_blank”将返回的内容放入新选项卡。我们现在想要进行更改以填充两个(或更多)新标签。
令人惊讶的是,Flash客户端似乎不会这样做。
我尝试过代码:
getURL(myUrl1, "_blank");
getURL(myUrl2, "_blank");
在这种情况下myUrl2的内容会显示(似乎myUrl1的调用刚刚丢失了?)。如果我打开电话:
getURL(myUrl2, "_blank");
getURL(myUrl1, "_blank");
我再次获得一个新标签,现在显示来自myUrl1的内容。
我认为这是某种计时问题,所以决定设置使用setTimeout()(https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/2/)函数来引入一些延迟。
如果我设置延迟回调,然后立即调用getURL(),我会立即调用一个新标签,稍后(8秒,15秒,30秒)回调实际上会运行但是然后它就像getURL()调用那样被忽略了?!?
这对我没有任何意义。 :(
任何人都可以解释为什么多个getURL()调用失败? (或者提供解决方法,甚至只是验证他们是否可以复制问题?)
必须提出这个建议: (仅供参考:看起来这对于Firefox 52.6,Chrome版本64.0.3282.186来说是失败的,但实际上在IE 11.909中工作。我一开始认为这不是浏览器问题,但似乎可能是这样吗?.swf文件正在生成来自Adobe Flash Professional CS6版本12.0.0.481。)
谢谢! ;)
EDIT2:稍微多一点的测试表明,使用setTimeout()函数延迟小至2秒(可能更小就足够了)实际上会导致两个标签在IE11下按预期启动和显示。对于背靠背getURL()调用的情况,IE11与Chrome和Firefox不一致。