0

私は JS 初心者なので、この質問があまりにも「初心者」である場合はご容赦ください。

注: 関数は長いですが、 // * ** * ** * **が表示されるまで下にスクロールしてください。これが重要な部分です。

私の機能:

function ShowWindowN(userId,url,width,height,courseId) {
  var iev=getIEVer();
  if(iev>=6&&iev<8){
    width+=16*1;
  }
  var w=screen.availWidth<width?screen.availWidth:width;
  var csCookie=readCookie('course_settings_'+userId);
  var found=false;
  if(csCookie!=null){
    csCookie=eval('({'+csCookie.replace(/&/g,',').replace(/=/g,':')+'})');
    if(csCookie[courseId]!=null){
      height+=1*csCookie[courseId].height;
      found=true;
    }
  }
  if(!found){
    var plCookie=readCookie('player_settings_'+userId);
    if(plCookie!=null){
      plCookie=eval('({'+plCookie.replace(/&/g,',').replace(/=/g,':')+'})');
      height+=1*plCookie.window_extra_height;
    }else{
      height+=16;
    }
  }
  var h=screen.availHeight<height?screen.availHeight:height;
  var left = (screen.availWidth/2)-(w/2);
  //************
  objMovieWindow=window.open(url, "movieWindow", "width=" + w + ", height=" + h + ", top=0, left="+left+", status=false, toolbar=false, menubar=false, location=false, directories=false, scrollbars=1, resizable=1"); 
  objMovieWindow.focus();
  //alert(objMovieWindow.name);
};

最後の 2 行目の alert() を見ると、それが機能せず、「権限が拒否されました」というエラーが表示されます。これだけで「close_me()」と言う関数もあります:

objMovieWindow.close();

しかし、それは機能せず、「未定義」エラーが発生します。基本的に、ページをロードし、リンクをクリックしてポップアップを起動すると、親ページがリロードされ、親ページのリンクをクリックしてポップアップを閉じます。

いまいましいポップアップウィンドウを閉じる方法を教えてください。

4

1 に答える 1

2

ページをリロードすると、への参照が失われるためobjMovieWindow、を呼び出すことができなくなりますobjMovieWindow.close()。ウィンドウを閉じたい場合は、ページの再読み込みを避ける必要があります。

アップデート

回避策の1つwindow.open()は、同じ名前で再度呼び出し、close()そこから返された参照を呼び出すことです。

于 2012-11-18T04:23:51.410 に答える