as3 打开窗口类

 package FlashCode.utils{

 import flash.display.Sprite;
 import flash.net.URLRequest;
 import flash.net.navigateToURL;
 import flash.external.ExternalInterface;

 public class openWindow {
  public function openWindow(url:String, window:String="_blank", features:String=""){

   var WINDOW_OPEN_FUNCTION:String = "window.open";
   var myURL:URLRequest = new URLRequest(url);
   var browserName:String = getBrowserName();

   if(getBrowserName() == "Firefox"){
    ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features);
   }
   //If IE,
   else if(browserName == "IE"){
    ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features);
    //ExternalInterface.call("function setWMWindow() {window.open(‘" + url + "‘);}");
   }
   //If Safari
   else if(browserName == "Safari"){
    navigateToURL(myURL, window);
   }
   //If Opera
   else if(browserName == "Opera"){
    navigateToURL(myURL, window);
   } else {
    navigateToURL(myURL, window);
   }

   /*Alternate methodology...
      var popSuccess:Boolean = ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features);
   if(popSuccess == false){
    navigateToURL(myURL, window);
   }*/

  }
  private function getBrowserName():String{
   var browser:String;

   //Uses external interface to reach out to browser and grab browser useragent info.
   var browserAgent:String = ExternalInterface.call("function getBrowser(){return navigator.userAgent;}");

    //  Debug.text += "Browser Info: [" + browserAgent + "]";

   //Determines brand of browser using a find index. If not found indexOf returns (-1).
   if(browserAgent != null && browserAgent.indexOf("Firefox") >= 0) {
    browser = "Firefox";
   }
   else if(browserAgent != null && browserAgent.indexOf("Safari") >= 0){
    browser = "Safari";
   }
   else if(browserAgent != null && browserAgent.indexOf("MSIE") >= 0){
    browser = "IE";
   }
   else if(browserAgent != null && browserAgent.indexOf("Opera") >= 0){
    browser = "Opera";
   }
   else {
    browser = "Undefined";
   }
   return browser;
  }
 }
}

在as2的时代,只有onRelease下的getURL才会被认为是一次完整的点击,onPress就会被拦截

到了navigateToURL的时代,即便你监听一个MouseEvent.CLICK事件,他也会被拦截,原因我现在也不知道,谁知道的话可以跟帖

那么怎么解决as3弹出一个_blank不被拦截呢,3个条件

1.判断浏览器的版本,如果是firefox和其他什么opera啥的就直接navigateToURL,如果是IE的话就调用window.open
2.必须监听MouseEvent.CLICK事件,如果是MouseEvent.DOWN啥的我就不敢保证了
3.wmode属性必须设置成opaque,Transparent的话我没试过,大家可以试试,反正window肯定不行

这3个条件满足了,才能保证弹出的新页面不被拦截!!!!!!!!!!

时间: 2024-11-09 16:58:32

as3 打开窗口类的相关文章

window.open新打开窗口与新开标签页

最近在使用window.open时忽略了一个细节问题:window.open新打开一个窗口,但是有时却是新打开一个窗口有时打开一个新标签页.虽然对一般的需求来说,这个两种情况都无所谓,但是对于那种有强烈区分的需求来说还是要注意的.那么怎么会出现这种不同的打开情况呢,这要从window.open方法的用法和不同浏览器来区分. 1.window.open的用法容易忽视的细节 window.open方法有三个参数: window.open(url, [name], [configuration]) 其

MFC注册窗口类以及FindWindow按窗口类名查询(避免用#32770获取窗口句柄)

呵呵,最近在研究SendMessage函数,其中需要用到m_hWnd,之后延伸着又尝试获得窗口的句柄,于是遇到了FindWindow函数,原型如下: HWND FindWindow ( LPCSTR lpClassName,    //输入窗口的类名,其实需要是注册过的类名才行,否则是要报错或者查找失败的. LPCSTR lpWindowName, //输入窗口的名称,就是窗口上面蓝色的那行玩意儿写的字. ); 对于这个函数,如果按照窗口的名称查找,相信大家都非常简单,因为名称在rc文件里,是已

通用窗口类 Inventory Pro 2.1.2 Demo1(下续篇 ),物品消耗扇形显示功能

本篇想总结的是Inventory Pro中通用窗口的具体实现,但还是要强调下该插件的重点还是装备系统而不是通用窗口系统,所以这里提到的通用窗口类其实是通用装备窗口类(其实该插件中也有非装备窗口比如NoticeUI等). 本篇涉及的功能用加出标出,具体的功能如下: 1.实现了两个窗口,通过点击键盘I来,打开或者关闭窗口也就是Toggle功能 2.装备窗口中的物品栏空格数量动态生成可控,可以在属性窗口手动配置 3.窗口具有拖拽功能 4.窗口物品具有拖拽,及窗口间拖拽 5.可以在窗口使用物品的功能,物

通用窗口类 Inventory Pro 2.1.2 Demo1(下)

本篇想总结的是Inventory Pro中通用窗口的具体实现,但还是要强调下该插件的重点还是装备系统而不是通用窗口系统,所以这里提到的通用窗口类其实是通用装备窗口类(其实该插件中也有非装备窗口比如NoticeUI等). 本篇涉及的功能用加出标出,具体的功能如下: 1.实现了两个窗口,通过点击键盘I来,打开或者关闭窗口也就是Toggle功能 2.装备窗口中的物品栏空格数量动态生成可控,可以在属性窗口手动配置 3.窗口具有拖拽功能 4.窗口物品具有拖拽,及窗口间拖拽 5.可以在窗口使用物品的功能,物

通用窗口类 Inventory Pro 2.1.2 Demo1(中)

本篇想总结的是Inventory Pro中通用窗口的具体实现,但还是要强调下该插件的重点还是装备系统而不是通用窗口系统,所以这里提到的通用窗口类其实是通用装备窗口类(其实该插件中也有非装备窗口比如NoticeUI等). 本篇涉及的功能用加出标出,具体的功能如下: 1.实现了两个窗口,通过点击键盘I来,打开或者关闭窗口也就是Toggle功能 2.装备窗口中的物品栏空格数量动态生成可控,可以在属性窗口手动配置 3.窗口具有拖拽功能 4.窗口物品具有拖拽,及窗口间拖拽 5.可以在窗口使用物品的功能,物

VC/MFC程序开启关闭其他软件,更改窗口类

流程: 1. 获取目标程序的  窗口HWND hWnd HWND hWnd = ::FindWindowA(_T("SoftWareClassName"),NULL); //获取需要软件的窗口 2. int ret = ::SendMessageA(hWnd ,WM_CLOSE,0,0); //关闭软件 3. WinExec(D:\\Foxit Reader.exe,SW_SHOWMAXIMIZED);  //开启软件 关于FindWindow()有两个参数  第一个是窗口类名,第二个

js中的window对象:打开窗口

~~ window.open():打开一个窗口 里面需要放三个参数: 1.打开窗口(网页)的位置: 2.打开的方式(自身页面,新开页面): 其中_blank新开一个窗口 3.打开网页的属性: window.open("http://www.baidu.com","_blank","width=500 height=500") window.close():关闭一个窗口 window.opener.close:关闭打开的窗口(关闭源窗口) ~~ 间

关于WNDCLASSEX窗口类

WNDCLASSEX窗口类原型如下 1 typedef struct WNDCLASSEX { 2 UINT cbSize; 3 UINT style; 4 WNDPROC lpfnWndProc; 5 int cbClsExtra; 6 int cbWndExtra; 7 HINSTANCE hInstance; 8 HICON hIcon; 9 HCURSOR hCursor; 10 HBRUSH hbrBackground; 11 LPCTSTR lpszMenuName; 12 LPCT

JavaScript打开窗口与关闭页面操作大全

JavaScript新开窗口 onClick="javascript:window.location='http://www.sowsoy.com'" JavaScript新开一个页面 <script src=javascript:window.open('http://www.sowsoy.com')> JavaScript提示后打开一个页面 <a href="http://www.sowsoy.com" target="_blank&